Sorting algorithms/Cycle sort: Difference between revisions

m
→‎{{header|Sidef}}: less code verbosity
m (Added Sidef)
m (→‎{{header|Sidef}}: less code verbosity)
Line 1,171:
var (writes=0, pos=0)
 
func f(cycle_starti, Ref item, bool=false) {
pos = (cycle_starti + array.ft(cycle_starti+1).count{ _ < *item })
return(false) if (bool && pos==cycle_starti)
while (*item == array[pos]) { ++pos }
(array[pos], *item) = (*item, array[pos])
Line 1,180:
}
 
array.each_kv { |cycle_starti, item|
f(cycle_starti, \item, true) || next
while (pos != cycle_starti) {
f(cycle_starti, \item)
}
}
2,747

edits