其主要是在不同增量的情况下使用插入排序
/*时间复杂度O(n^1.3) 空间复杂度O(1)
希尔排序是在,插入排序的基础上进行的改进,插入排序适合小规模数据或者基本有序的数据,希尔排序可用于数据顺序较乱的数据
基本思想,先将数组分成两个两个一组组内进行插入排序,分组方式为第i个数据和i+size(数组长度)/2
然后4个数4个数一组,组内插入排序。分组方式为i个数和i+size/2/2 +size/2 + size/2+size/2/2
直到分组数为该数组长度的一半结束
*/
#include<iostream>
using namespace std;
void CC()//插入排序
{
}
int main()
{
int a[10]={0,5,8,9,6,3,2,1,4,7};
int i,j;
int n=10;
int t,k;
for(k=n/2;k>0;k/=2)//设置增量
/*往下为插入排序,注意增量不同*/
{
for(i=k;i<n;i++)//因为插入排序每次都是从后往前扫,所以设大数;
{
t=a[i];
for(j=i-k;j>=0 && t<a[j];j-=k)
{
a[j+k]=a[j];
}
a[j+k]=t;
}
}
for(i=0;i<10;i++)
cout<<a[i]<<" ";
return 0;
}