Averages/Median: Difference between revisions

Content added Content deleted
m (added Category:Sorting)
Line 976:
=={{header|EasyLang}}==
 
<lang>func quickselect k . list#[] res# .
<lang>intvars
func quickselect k . list#[] res# .
#
subr partition
swap list#[(left + right) / 2] list#[left]
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 = 0
right = len list#[] - 1
while left < right
call partition
Line 1,002 ⟶ 1,001:
.
.
res# = list#[k]
.
func median . list#[] res# .
h = len list#[] / 2
call quickselect h list#[] res#
if len list#[] mod 2 = 0
call 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#
print med#
test#[] = [ 4.1 7.2 1.7 9.3 4.4 3.2 ]
call median test#[] med#
print med#</lang>
 
<pre>
4.40040
4.25025
</pre>