希尔排序
#include<iostream>
using namespace std;
//当k取1时,就等同于直接插入排序方法,
//由于前边大增量的处理,使数组大体有序,因此最后一趟排序移动的记录少,处理速度快
void insert_sort(int *x, int n)
{
int i, j, t,k;
k=n/2;
while(k>=1)
{
for (i=k; i <n; i++)
{
t=*(x+i);
for (j=i-k; j>=0 && t <*(x+j); j=j-k)
{
*(x+j+k) = *(x+j);
}
*(x+j+k) = t;
}
k=k/2;
}
}
void main()
{
int i,n,x[100];
while(cin>>n)
{
for(i=0;i<n;i++)
cin>>x[i];
insert_sort(x,n);
for(i=0;i<n;i++)
cout<<x[i]<<" ";
cout<<endl;
}
}