希尔排序

#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;
}

}

  

posted on 2011-08-23 17:15  sysu_mjc  阅读(122)  评论(0编辑  收藏  举报

导航