RosettaCodeData/Task/Quickselect-algorithm/OCaml/quickselect-algorithm.ocaml
2015-02-20 09:02:09 -05:00

10 lines
325 B
Text

let rec quickselect k = function
[] -> failwith "empty"
| x :: xs -> let ys, zs = List.partition ((>) x) xs in
let l = List.length ys in
if k < l then
quickselect k ys
else if k > l then
quickselect (k-l-1) zs
else
x