RosettaCodeData/Task/Quickselect-algorithm/EasyLang/quickselect-algorithm.easy

31 lines
541 B
Plaintext

func qselect &list[] k .
#
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
partition
if mid < k
left = mid + 1
elif mid > k
right = mid - 1
else
left = right
.
.
return list[k]
.
d[] = [ 9 8 7 6 5 0 1 2 3 4 ]
for i = 1 to len d[]
print qselect d[] i
.