6-8 希尔排序的实现
本题要求实现一趟希尔排序函数,待排序列的长度1<=n<=1000。
函数接口定义:
void ShellInsert(SqList L,int dk);
其中L是待排序表,使排序后的数据从小到大排列。
###类型定义:
typedef int KeyType;
typedef struct {
KeyType *elem; /*elem[0]一般作哨兵或缓冲区*/
int Length;
}SqList;
答案:
void ShellInsert(SqList L,int dk){ for(int i=dk+1;i<=L.Length;i++){ int p=i; L.elem[0]=L.elem[p]; p-=dk; while(p>0&&L.elem[p]>L.elem[0]){ L.elem[p+dk]=L.elem[p]; p-=dk; } L.elem[p+dk]=L.elem[0]; } }

浙公网安备 33010602011771号