希尔排序 (Shell's Sort) 又称“缩小增量排序”(Diminishing Increment Sort), 是直接插入排序算法的一种更高效的改进版本。希尔排序是 非稳定排序算法。该方法因 D.L.Shell 于 1959 年提出而得名。
(a: &mut [T])
| 5 | //! 非稳定排序算法。该方法因 D.L.Shell 于 1959 年提出而得名。 |
| 6 | |
| 7 | pub fn sort<T>(a: &mut [T]) |
| 8 | where |
| 9 | T: Ord + Copy, |
| 10 | { |
| 11 | let len = a.len(); |
| 12 | let mut gap = len; |
| 13 | while gap > 1 { |
| 14 | gap /= 2; |
| 15 | |
| 16 | for i in gap..len { |
| 17 | let insert_v = a[i]; |
| 18 | let mut j = i; |
| 19 | while j >= gap && insert_v < a[j - gap] { |
| 20 | a[j] = a[j - gap]; |
| 21 | j -= gap; |
| 22 | } |
| 23 | a[j] = insert_v; |
| 24 | } |
| 25 | } |
| 26 | } |