希尔排序思路:希尔排序就是插入排序的一种,希尔排序首先确定分组大小,组内采用直接插入排序;然后再减少分组,直到组数为1时全部元素都排好了顺序。
代码实现:
#include <stdio.h>
void ShellSort(int*ptr,int n);
void PrintList(int*ptr,int n);
int main()
{
int n,data[1000],i;
while (scanf("%d",&n)!=EOF)
{
for (i=0;i<n;i++)
{
scanf("%d",&data[i]);
}
ShellSort(data,n);
PrintList(data,n);
}
return 0;
}
void ShellSort(int*ptr,int n)
{
int g=n/2,i,j,temp;
while (g>=1)
{
for (i=g;i<n;i++)
{
temp=ptr[i];
j=i-g;
while (temp<ptr[j] && j>=0)
{
ptr[j+g]=ptr[j];
j-=g;
}
ptr[j+g]=temp;
}
g=g/2;
}
}
void PrintList(int*ptr,int n)
{
for (int i=0;i<n;i++)
{
printf("%d ",ptr[i]);
}
}