《大话数据结构》第9章 排序 9.6 希尔排序(下)
9.6.3 希尔排序算法
好了,为了能够真正弄明白希尔排序的算法,我们还是老办法——模拟计算机在执行算法时的步骤还研究算法到底是如何进行排序的。
希尔排序算法代码如下。1 void ShellSort(SqList *L)
2 {
3 int i,j;
4 int increment=L->length;
5 do
6 {
7 increment=increment/3+1; /* 增量序列 */
8 for(i=increment+1;i<=L->length;i++)
9 {
10 if (L->r[i]<L->r[i-increment]) /* 需将L->r[i]插入有序增量子表 */
11 {
12 L->r[0]=L->r[i]; /* 暂存在L->r[0] */
13 for(j=i-increment;j>0 && L->r[0]<L->r[j];j-=increment)
14 L->r[j+increment]=L->r[j]; /* 记录后移,查找插入位置 */
15 L->r[j+increment]=L->r[0]; /* 插入 */
16 }
17 }
18补充:综合编程 , 其他综合 ,