sorting_algorithm/
comb_sort.rs1pub fn sort<T: Ord>(data: &mut [T]) {
19 if data.len() <= 1 {
20 return;
21 }
22
23 let mut gap = data.len();
24 let mut swapped = true;
25
26 while gap != 1 || swapped {
27 gap = get_next_gap(gap);
28
29 swapped = false;
30
31 for i in 0..data.len() - gap {
32 if data[i] > data[i + gap] {
33 data.swap(i, i + gap);
34 swapped = true;
35 }
36 }
37 }
38}
39
40fn get_next_gap(gap: usize) -> usize {
41 let gap = (gap * 10) / 13;
42
43 if gap < 1 {
44 return 1;
45 }
46
47 gap
48}