Sorting algorithms/Comb sort: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) (Rename Perl 6 -> Raku, alphabetize, minor clean-up) |
(Added Rust solution) |
||
Line 2,429: | Line 2,429: | ||
results in |
results in |
||
<pre>[12, 14, 23, 24, 24, 31, 35, 38, 46, 51, 57, 57, 58, 76, 78, 89, 92, 95, 97, 99]</pre> |
<pre>[12, 14, 23, 24, 24, 31, 35, 38, 46, 51, 57, 57, 58, 76, 78, 89, 92, 95, 97, 99]</pre> |
||
=={{header|Rust}}== |
|||
<lang rust>fn comb_sort<T: Ord>(a: &mut [T]) { |
|||
let len = a.len(); |
|||
let mut gap = len; |
|||
let mut swapped = true; |
|||
while gap > 1 || swapped { |
|||
gap = (4 * gap)/5; |
|||
if gap < 1 { |
|||
gap = 1; |
|||
} |
|||
let mut i = 0; |
|||
swapped = false; |
|||
while i + gap < len { |
|||
if a[i] > a[i + gap] { |
|||
a.swap(i, i + gap); |
|||
swapped = true; |
|||
} |
|||
i += 1; |
|||
} |
|||
} |
|||
} |
|||
fn main() { |
|||
let mut v = vec![10, 8, 4, 3, 1, 9, 0, 2, 7, 5, 6]; |
|||
println!("before: {:?}", v); |
|||
comb_sort(&mut v); |
|||
println!("after: {:?}", v); |
|||
}</lang> |
|||
{{out}} |
|||
<pre> |
|||
before: [10, 8, 4, 3, 1, 9, 0, 2, 7, 5, 6] |
|||
after: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] |
|||
</pre> |
|||
=={{header|Sather}}== |
=={{header|Sather}}== |