每天一个小算法(Shell Sort3)

时间:2023-03-09 09:06:07
每天一个小算法(Shell Sort3)

希尔算法自己编了一个,循环很多,很不美观,不过运行正确:

c语言实现:

#include <stdio.h>
#include <stdlib.h>
#define LEN 20 int main()
{
int d,i,j,k;
int arr[]={20,19,16,17,11,12,13,18,14,15,10,9,8,7,6,5,4,3,2,1};
int key; for(d=LEN/2;d>0;d--)
for(i=0;i<d;i++)
for(j=i+d;j<LEN;j=j+d)
{
k=j;
key=arr[j];
while(k>0 && arr[k-d]>key)
{
arr[k]=arr[k-d];
k=k-d;
}
arr[k]=key;
} for(i=0;i<LEN;i++)
printf("%d\n",arr[i]);
}

运行结果:

每天一个小算法(Shell Sort3)

明天任务:

好好思考希尔排序的实现;想一想如何优化比较好。