希尔排序
什么是希尔排序
1959年Shell发明,第一个突破O(n^2)的排序算法,是简单插入排序的改进版。它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序又叫缩小增量排序。
- 时间复杂度:O(n^1.3)
- 空间复杂度:O(1)
- 稳定性:不稳定
希尔排序代码
public void sort(int[] arr) {
int len = arr.length;
//O(n^1.3)
for (int gap = len / 2; gap > 0 ; gap = gap / 2) {
for (int i = gap; i < len; i++) {
int e = arr[i];
int j = i;
while (j - gap >= 0 && arr[j - gap] > e){
arr[j] = arr[j - gap];
j = j - gap;
}
arr[j] = e;
}
}
}


被折叠的 条评论
为什么被折叠?



