Averages/Median: Difference between revisions

Content added Content deleted
m (added Category:Sorting)
Line 976: Line 976:
=={{header|EasyLang}}==
=={{header|EasyLang}}==


<lang>func quickselect k . list[] res .
<lang>intvars
func quickselect k . list#[] res# .
#
#
subr partition
subr partition
swap list#[(left + right) / 2] list#[left]
swap list[(left + right) / 2] list[left]
mid = left
mid = left
for i = left + 1 to right
for i = left + 1 to right
if list#[i] < list#[left]
if list[i] < list[left]
mid += 1
mid += 1
swap list#[i] list#[mid]
swap list[i] list[mid]
.
.
.
.
swap list#[left] list#[mid]
swap list[left] list[mid]
.
.
left = 0
left = 0
right = len list#[] - 1
right = len list[] - 1
while left < right
while left < right
call partition
call partition
Line 1,002: Line 1,001:
.
.
.
.
res# = list#[k]
res = list[k]
.
.
func median . list#[] res# .
func median . list[] res .
h = len list#[] / 2
h = len list[] / 2
call quickselect h list#[] res#
call quickselect h list[] res
if len list#[] mod 2 = 0
if len list[] mod 2 = 0
call quickselect h - 1 list#[] h#
call quickselect h - 1 list[] h
res# = (res# + h#) / 2
res = (res + h) / 2
.
.
.
.
test#[] = [ 4.1 5.6 7.2 1.7 9.3 4.4 3.2 ]
test[] = [ 4.1 5.6 7.2 1.7 9.3 4.4 3.2 ]
call median test#[] med#
call median test[] med
print med#
print med
test#[] = [ 4.1 7.2 1.7 9.3 4.4 3.2 ]
test[] = [ 4.1 7.2 1.7 9.3 4.4 3.2 ]
call median test#[] med#
call median test[] med
print med#</lang>
print med</lang>


<pre>
<pre>
4.400
4.40
4.250
4.25
</pre>
</pre>