希尔排序
* 平均时间复杂度O(n^(1.3~2))
* 空间复杂度T(1)
* 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;
* 随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止
* 不稳定
java实现:
public class ShellSort {
public void shellSort(int[] arr)
{
if (arr.length<2||arr==null)
return;
int len = arr.length;
while (true)
{
len>>=1;
for (int i = 0;i<len;i++)
{
for (int j = i+len;j<arr.length;j+=len)
{
int temp = arr[j];
int index= j-len;
while (index>=0&&arr[index]>temp)
{
arr[index+len] = arr[index];
index-=len;
}
arr[index+len] = temp;
}
}
if (len==1) {
break;
}
}
}
}