Sorting algorithms/Cycle sort: Difference between revisions

m
(Added XPL0 example.)
Line 2,266:
 
func f(i, Ref item, bool=false) {
pos = (i + array.ftslice(i+1).count{ _ < *item })
return(false) if (bool && pos==i)
while (*item == array[pos]) { ++pos }
Line 2,276:
array.each_kv { |i, item|
f(i, \item, true) || next
while (pos  != i) {
f(i, \item)
}
2,747

edits