Sorting algorithms/Cycle sort: Difference between revisions
Content added Content deleted
Walterpachl (talk | contribs) m (→{{header|REXX}}: removed incorrect.flag) |
|||
Line 748: | Line 748: | ||
[0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 5, 5, 5, 6, 8, 9] |
[0, 0, 0, 1, 1, 1, 1, 2, 2, 3, 5, 5, 5, 6, 8, 9] |
||
writes: 14</pre> |
writes: 14</pre> |
||
=={{header|Julia}}== |
|||
{{works with|Julia|0.6}} |
|||
<lang julia>function cyclesort!(v::Vector) |
|||
writes = 0 |
|||
for (cyclestart, item) in enumerate(v) |
|||
pos = cyclestart |
|||
for item2 in v[cyclestart + 1:end] |
|||
if item2 < item pos += 1 end |
|||
end |
|||
if pos == cyclestart continue end |
|||
while item == v[pos] |
|||
pos += 1 |
|||
end |
|||
v[pos], item = item, v[pos] |
|||
writes += 1 |
|||
while pos != cyclestart |
|||
pos = cyclestart |
|||
for item2 in v[cyclestart + 1:end] |
|||
if item2 < item pos += 1 end |
|||
end |
|||
while item == v[pos] |
|||
pos += 1 |
|||
end |
|||
v[pos], item = item, v[pos] |
|||
writes += 1 |
|||
end |
|||
end |
|||
return v |
|||
end |
|||
v = rand(-10:10, 10) |
|||
println("# unordered: $v\n -> ordered: ", cyclesort!(v))</lang> |
|||
{{out}} |
|||
<pre># unordered: [-2, -2, -5, -9, 8, 7, 2, -1, 3, -6] |
|||
-> ordered: [-9, -6, -5, -2, -2, -1, 2, 3, 7, 8]</pre> |
|||
=={{header|Kotlin}}== |
=={{header|Kotlin}}== |