sorting_algorithm/
shell_sort.rs

1pub fn sort<T: Ord>(data: &mut [T]) {
2    let n = data.len();
3
4    let mut gap = n / 2;
5
6    while gap > 0 {
7        for i in gap..n {
8            let mut j = i;
9
10            while j >= gap && data[j] < data[j - gap] {
11                data.swap(j, j - gap);
12                j -= gap;
13            }
14        }
15
16        gap /= 2;
17    }
18}