RosettaCodeData/Task/Quickselect-algorithm/Arturo/quickselect-algorithm.arturo
2026-02-01 16:33:20 -08:00

24 lines
551 B
Text

quickselect: function [a k][
arr: new a
while ø [
indx: random 0 (size arr)-1
pivot: arr\[indx]
remove 'arr .index indx
left: select arr 'item -> item<pivot
right: select arr 'item -> item>pivot
when.has: k [
[= size left] -> return pivot
[< size left] -> arr: new left
true [
k: (k - size left) - 1
arr: new right
]
]
]
]
v: [9 8 7 6 5 0 1 2 3 4]
print map 0..(size v)-1 'i ->
quickselect v i