=================目录=================
2.希尔排序
基本思想:先将整个待排序列分割成若干个子序列,在子序列内进行插入排序,待整个序列基本有序时,再对全体记录进行一次插入排序。
例如序列8,9,1,7,2,3,5,4.颜色相同代表在一组。
void ShellSort(int a[],int n)
{
int d,i,j,temp;
for(d=n/2;d>=1;d/=2)分间隔
{
for(i=d;i<n;i++)//从第d个开始每次都往前看
{
temp=a[i];
int j=i-d;
因为是插入排序 我要把temp放在合适的位置,前面的要比我大,那么那个数九后移
while(j>=0&&temp<a[j])
{
a[j+d]=a[j];
j-=d;
}
a[j+d]=temp;
}
}
希尔排序的时间性能在O(n*log2(n))~O(n^2)
他是一种不稳定排序!局部有序不能提高插入效率