void ShellSort(int A[],int n)
{
int i,j,k,s;
int temp;
s = n /2;
/*分组排序,初始增量是s,每循环一次增量减半,直到增量为零时结束*/
for(k=s;k>0;k>>=1)
{
for(i=k;i<n;i++)
{
temp = A[i];
j = i - k;
/*组内排序,将temp直接插入组合合适的记录位置*/
while(j >= 0 && temp < A[j])
{
A[j+k] = A[j];
j -= k;
}
A[j+k] = temp;
}
}
}
int main()
{
int A[] = {10,50,2,65,31,145};
ShellSort(A,6);
int i;
for(i=0;i<6;i++)
printf("%d ",A[i]);
printf("\n");
return 0;
}