# include <stdio.h>
# define MAXSIZE 20
typedef int KeyType;
typedef struct {
KeyType key;
// InfoType otherinfo;
}RedType;
typedef struct{
RedType r[MAXSIZE+1];
int length ;
}SqList;
void ShellInsert(SqList &L,int dk){
int i,j;
for(i=dk+1;i<L.length;i++){
if(L.r[i].key<L.r[i-dk].key){
L.r[0]=L.r[i];
for(j=i-dk;j>0&&(L.r[0].key<L.r[j].key);j-=dk)
L.r[j+dk]=L.r[j];
L.r[j+dk]=L.r[0];
}
}
}
void ShellSort(SqList &L ,int dlat[],int t){
for(int k=0;k<t;k++)
ShellInsert(L, dlat[k]);
}
main (){
SqList L;
L.r[1].key=5;
L.r[2].key=3;
L.r[3].key=8;
L.r[4].key=6;
L.r[5].key=1;
L.r[6].key=2;
L.r[7].key=4;
L.r[8].key=7;
L.r[9].key=10;
L.r[10].key=9;
L.length=10;
int dlta[3]={4,2,1};
ShellSort(L ,dlta,3);
for(int i=1;i<L.length;i++)
printf(" %d ",L.r[i].key);
}
希尔排序
最新推荐文章于 2023-05-29 11:43:48 发布