希尔排序
时间复杂度范围:O(nlogn)~O(n2),平均时间复杂度大致是O(n√n)
//升序
int Hillsort(int a[],int n){
int i,j,k,x=n;
do
{
x=x/3+1;
for(i=0;i<x;i++)
{
for(j=i+x;j<10;j+=x)
{
if(a[j]<a[j-x])
{
int temp=a[j];
for(k=j-x;k>=0&&temp<a[k];k-=x)
a[k+x]=a[k];
a[k+x]=temp;
}
}
}
}while(x>1);
}
//降序
int Hillsort(int a[],int n){
int i,j,k,x=n;
do
{
x=x/3+1;
for(i=0;i<x;i++)
{
for(j=i+x;j<10;j+=x)
{
if(a[j]>a[j-x])
{
int temp=a[j];
for(k=j-x;k>=0&&temp>a[k];k-=x)
a[k+x]=a[k];
a[k+x]=temp;
}
}
}
}while(x>1);
}