Sorting algorithms/Comb sort: Difference between revisions
Content added Content deleted
m (→{{header|REXX}}: added/changed comments and whitespace, used a reduced-sized font for the output.) |
(Added Wren) |
||
Line 2,729: | Line 2,729: | ||
<pre>45, 414, 862, 790, 373, 961, 871, 56, 949, 364 |
<pre>45, 414, 862, 790, 373, 961, 871, 56, 949, 364 |
||
45, 56, 364, 373, 414, 790, 862, 871, 949, 961</pre> |
45, 56, 364, 373, 414, 790, 862, 871, 949, 961</pre> |
||
=={{header|Wren}}== |
|||
<lang ecmascript>var combSort = Fn.new { |a| |
|||
var gap = a.count |
|||
while (true) { |
|||
gap = (gap/1.25).floor |
|||
if (gap < 1) gap = 1 |
|||
var i = 0 |
|||
var swaps = false |
|||
while (true) { |
|||
if (a[i] > a[i+gap]) { |
|||
var t = a[i] |
|||
a[i] = a[i+gap] |
|||
a[i+gap] = t |
|||
swaps = true |
|||
} |
|||
i = i + 1 |
|||
if (i + gap >= a.count) break |
|||
} |
|||
if (gap == 1 && !swaps) return |
|||
} |
|||
} |
|||
var as = [ [4, 65, 2, -31, 0, 99, 2, 83, 782, 1], [7, 5, 2, 6, 1, 4, 2, 6, 3] ] |
|||
for (a in as) { |
|||
System.print("Before: %(a)") |
|||
combSort.call(a) |
|||
System.print("After : %(a)") |
|||
System.print() |
|||
}</lang> |
|||
{{out}} |
|||
<pre> |
|||
Before: [4, 65, 2, -31, 0, 99, 2, 83, 782, 1] |
|||
After : [-31, 0, 1, 2, 2, 4, 65, 83, 99, 782] |
|||
Before: [7, 5, 2, 6, 1, 4, 2, 6, 3] |
|||
After : [1, 2, 2, 3, 4, 5, 6, 6, 7] |
|||
</pre> |
|||
=={{header|zkl}}== |
=={{header|zkl}}== |