一.基本思想
希尔排序,也叫递减增量排序,是插入排序的改进版本
插入排序对于几乎已经排好序的序列进行排序时几乎可以达到线性,所以希尔排序先将序列分为几个增量区域来分别的进行插入排序,最后对整个序列进行排序
二.概览
分类:比较排序
数据结构:数组
最差时间复杂度:O(n^2)
最优时间复杂度:O(n)
平均时间复杂度:O(n^1.3)
所需辅助空间:O(1)
稳定性:不稳定
三.代码实现
public class Shell { public static void sort(int a[]){ int N = a.length; for (int D=N/2;D>0;D/=2){ //增量函数-每次增量减少一半 for (int i=D;i<N;i++){ for (int j=i;j>=D&&a[j]<a[j-D];j-=D){ int t = a[j]; a[j] = a[j-D]; a[j-D] = t; } } } } }