基本思想:先将整个待排记录分成若干个子待排记录,分别将子待排进行直接插入排序,然后得到“基本有序”的整体记录,最后对整体记录进行一次直接插入排序,完成希尔排序。
图示:

代码:
ShellSort(int* p, int length) { int dalt = length / 2;//增量 while (dalt>=1) //增量终止条件 { for (int i = dalt;dalt<length &&i < length; i++)//从位置dalt to length 去循环 看成是length-dalt个字串 { int temp = p[i]; int j = i - dalt; while (j>=0&&p[j]>temp)//找到temp插入的位置A { p[j+dalt] = p[j]; j = j - dalt; } p[j+dalt] = temp; //插入到A位置 } dalt /= 2; //增量递减方式 } }
讯享网
结果:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/43546.html