本帖最后由 ☆﹎尐の潴猪 于 2013-12-11 10:01 编辑 #include <stdio.h>
#define LT(x,y) x>y?0:1
#define MAXSIZE 11
typedef int KeyType;
typedef struct {
KeyType key;
} RedType;
typedef struct{
RedType r[MAXSIZE];
int length;
}SqList;
void ShellInsert(SqList & L,int dk)
{
int i,j;
for(i=dk+1;i<=L.length;i++)
if(LT(L.r[i].key,L.r[i-dk].key))
{
L.r[0].key=L.r[i].key;
for(j=i-dk;j>0&<(L.r[0].key,L.r[j].key);j-=dk) //为什么我在调试的时候,这里的J会不满足J>0的条件?
L.r[j+dk].key=L.r[j].key;
L.r[j+dk].key=L.r[0].key;
}
}//ShellInsert
int main()
{
int i;
int a[11]={0,49,38,65,97,76,13,27,49,55,04};
SqList L;
L.length=MAXSIZE;
for(i=1;i<MAXSIZE;i++)
L.r[i].key=a[i];
ShellInsert(L,L.length/2);
for(i=1;i<MAXSIZE;i++)
printf("%d ",L.r[i].key);
printf("\n");
ShellInsert(L,(L.length)/4+1);
for(i=1;i<MAXSIZE;i++)
printf("%d ",L.r[i].key);
return 0;
}
|