一 希尔排序算法
算法基本思想是先把带排序元素序列分为若干个子序列(相隔某一增量元素组成),对子序列进行插入排序,然后依次缩减增量在排序,待整个序列基本有序后在对全体元素进行一次插入排序,因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很高的,因此希尔排序在时间效率上比前两种方法有较大提高
二 代码
public static void sort(int[] arr)
{
int len = arr.length/2;
int i, j, k, num;
while(len > 0) //步长
{
for(i=0; i<len; i++) //对每一组进行插入排序
{
for(j=len+i; j<arr.length; j+=len)
{
num = arr[j];
for(k=j-len; k>=0 && arr[k] >num; k-=len)
{
arr[k+len] = arr[k];
}
arr[k+len] = num;
}
}
len = len / 2; //调整步长
}
}