|
1鱼币
本帖最后由 ☆﹎尐の潴猪 于 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;
- }
复制代码
|
|