#include"stdio.h"
//希尔排序
shellInsert(int a[],int d,int len)
{
int i,j;
int temp;
for(i=d;i<len;i++)
{
j=i-d;
temp=a[i];
while(j>=0&&temp<a[j])
{
a[j+d]=a[j];
j-=d;
}
if(j!=i-d)
a[j+d]=temp;
}
for(i=0;i<len;i++)
{
printf("%4d ",a[i]);
}
printf("\n");
}
shellSort(int a[],int len)
{
int i=0;
int d;
d=len/2;
for(i=0;d>0;i++)
{
d=d/2;
shellInsert(a,d,len);
}
}
void main()
{
int arr[]={2,5,1,88,55,3,5,3,98};
int i;
printf("排序前的数组\n");
for(i=0;i<sizeof(arr)/sizeof(int);i++)
printf("%4d ",arr[i]);
printf("\n");
printf("排序中:\n");
shellSort(arr,sizeof(arr)/sizeof(int));
printf("快速排序后的数组\n");
for(i=0;i<sizeof(arr)/sizeof(int);i++)
printf("%4d ",arr[i]);
printf("\n");
getch();
}
希尔排序
最新推荐文章于 2024-06-04 00:42:18 发布