希尔排序
**时间复杂度:**最好 O(N)
最坏 O(n ^ 2)
稳定性: 比较时加了" = ",则不稳定,否则稳定
实现: 组内直接插入排序,最后看成一组,进行插入排序。
思想与直接插入排序类似,不过增量变成了组的差值(这是因为在进行组内排序)
分组-》组内插入排序-》最后看成一组
代码示例:
public static void shell(int[] array,int gap){
for(int i = gap;i < array.length;i++) {
int tmp = array[i];
int j = i - gap;
for(;j >= 0;j -= gap){
if(array[j] > tmp){
array[j + gap] = array[j];
}else {
break;
}
}
array[j + gap] = tmp;
}
}
public static void shellSort(int[] array) {
//这里先分为5组,再分为3组,之后看成一组
int[] drr = {5,3,1};
for(int i = 0;i < drr.length;i++){
shellSort(array,drr[i]);
}
}
来源:CSDN
作者:Anonyme(ღ˘⌣˘ღ)
链接:https://blog.csdn.net/qq_45605759/article/details/104079890