//实现希尔插入排序算法
#include<stdio.h>
#include<malloc.h>
#define MAXE 20
typedef int KeyType;
typedef char InfoType;
typedef struct
{
KeyType key;
InfoType data[10];
}RecType;
void ShellSort(RecType r[],int n)//
{
int i,j,d,k;
RecType temp;
d=n/2;
while(d>0)
{
for(i=d;i<n;i++)
{
j=i-d;
while(j>=0 && r[j].key>r[j+d].key)
{
temp=r[j];
r[j]=r[j+d];
r[j+d]=temp;
j=j-d;
}
}
printf(" d=%d: ",d);//
for(k=0;k<n;k++)
printf("%3d",r[k].key);
printf("\n");
d=d/2; //
}
}
int main()
{
int i,k,n;
KeyType a[]={9,8,7,6,5,4,3,2,1,0};
RecType r[MAXE];
n=sizeof(a)/4;
for(i=0;i<n;i++)
r[i].key=a[i];
printf("\n");
printf("初始关键词: ");
for(k=0;k<n;k++)
printf("%3d",r[k].key);
printf("\n");
ShellSort(r,n);
printf(" 最后结果: ");
for(k=0;k<n;k++)
printf("%3d",r[k].key);
printf("\n\n");
return 0;
}
数据结构源码笔记(C语言描述)汇总: