Data update
This commit is contained in:
parent
5af6d93694
commit
796d366b97
455 changed files with 7413 additions and 1900 deletions
|
|
@ -1,40 +1,40 @@
|
|||
proc quickselect k . list[] res .
|
||||
#
|
||||
subr partition
|
||||
mid = left
|
||||
for i = left + 1 to right
|
||||
if list[i] < list[left]
|
||||
mid += 1
|
||||
swap list[i] list[mid]
|
||||
#
|
||||
subr partition
|
||||
mid = left
|
||||
for i = left + 1 to right
|
||||
if list[i] < list[left]
|
||||
mid += 1
|
||||
swap list[i] list[mid]
|
||||
.
|
||||
.
|
||||
.
|
||||
swap list[left] list[mid]
|
||||
.
|
||||
left = 1
|
||||
right = len list[]
|
||||
while left < right
|
||||
call partition
|
||||
if mid < k
|
||||
left = mid + 1
|
||||
elif mid > k
|
||||
right = mid - 1
|
||||
else
|
||||
left = right
|
||||
.
|
||||
.
|
||||
res = list[k]
|
||||
swap list[left] list[mid]
|
||||
.
|
||||
left = 1
|
||||
right = len list[]
|
||||
while left < right
|
||||
partition
|
||||
if mid < k
|
||||
left = mid + 1
|
||||
elif mid > k
|
||||
right = mid - 1
|
||||
else
|
||||
left = right
|
||||
.
|
||||
.
|
||||
res = list[k]
|
||||
.
|
||||
proc median . list[] res .
|
||||
h = len list[] div 2 + 1
|
||||
call quickselect h list[] res
|
||||
if len list[] mod 2 = 0
|
||||
call quickselect h - 1 list[] h
|
||||
res = (res + h) / 2
|
||||
.
|
||||
h = len list[] div 2 + 1
|
||||
quickselect h list[] res
|
||||
if len list[] mod 2 = 0
|
||||
quickselect h - 1 list[] h
|
||||
res = (res + h) / 2
|
||||
.
|
||||
.
|
||||
test[] = [ 4.1 5.6 7.2 1.7 9.3 4.4 3.2 ]
|
||||
call median test[] med
|
||||
median test[] med
|
||||
print med
|
||||
test[] = [ 4.1 7.2 1.7 9.3 4.4 3.2 ]
|
||||
call median test[] med
|
||||
median test[] med
|
||||
print med
|
||||
|
|
|
|||
13
Task/Averages-Median/FutureBasic/averages-median.basic
Normal file
13
Task/Averages-Median/FutureBasic/averages-median.basic
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
local fn MedianAverage( arguments as CFArrayRef ) as CFStringRef
|
||||
ExpressionRef expRef = fn ExpressionForFunction( @"median:", @[fn ExpressionForConstantValue( arguments )] )
|
||||
CFNumberRef result = fn ExpressionValueWithObject( expRef, NULL, NULL )
|
||||
CFStringRef median = fn NumberStringValue( result )
|
||||
end fn = median
|
||||
|
||||
print fn MedianAverage( @[@1, @9, @2] ) // 2
|
||||
print fn MedianAverage( @[@1, @9, @2, @4] ) // 3
|
||||
print fn MedianAverage( @[@5.961475, @2.025856, @7.262835, @1.814272, @2.281911, @4.854716] ) // 3.5683135
|
||||
print fn MedianAverage( @[@4.1, @5.6, @7.2, @1.7, @9.3, @4.4, @3.2] ) // 4.4
|
||||
print fn MedianAverage( @[@40.12, @860.77, @960.29, @920.13] ) // 890.45
|
||||
|
||||
HandleEvents
|
||||
Loading…
Add table
Add a link
Reference in a new issue