希尔排序算法(改)

Posted 路之编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了希尔排序算法(改)相关的知识,希望对你有一定的参考价值。


“大家好,今天我们来学习希尔排序的算法。学了前两节的直接插入排序和折半插入排序的算法,相信大家对排序都有了一个新的认识,认识到我们大学里所学的排序与小学所学的排序还是有一定的差距的。这个是显然的。不知道前两节的学习内容大家完成的怎么样呢?我们又要开启新的排序算法旅程喽!加油!”



01


算法的基本思想

希尔排序算法(改)
希尔(Shell)排序又称缩小增量排序方法,其基本思想是:把元素按下标的一定增量d分组,对每组元素采用直接插入排序的方法进行排序,然后随着增量的逐渐减小,所分成的组包含的元素越来越多,到d值减小到1时,整个数据合为一组,构成一组有序元素,则完成排序。
希尔排序算法(改)





02


排序方法的演示

希尔排序算法(改)

希尔排序算法(改)


希尔排序算法(改)





03


排序算法的实现


希尔排序算法(改)


/*希尔排序算法*/void ShellSort(SqList R[],int n){ int i,j,d; SqList tmp;  d=n/2;        //增量初置 while(d>0) //循环到d=1 {    for(i=d;i<n;i++)      //对所有相隔d位置的元素进行排序    {     tmp=R[i];     j=i-d;     while(j>=0&&tmp.key<R[j].key)     {        R[j+d]=R[j];        //对相隔d位置的元素进行排序     j=j-d;     }      R[j+d]=tmp;    //插入元素    }    d=d/2;            //减小增量 }}


希尔排序算法(改)





04


相关例题



希尔排序算法(改)

Created with Sketch. 点击空白框出现正确答案         答题完毕   B 正确答案是 点击空白处出现下一题 1、1、关键字序列{Q,H,C,Y,Q,A,M,S, R,D,F,X},要求按照关键字递增的次序进行排序, 若初始步长为4的希尔排序算法,则第一趟后的结果是() A、{A,C,D,F,H,M,Q,Q,R,S,X,Y} B、{Q,A,C,S,Q,D,F,X,R,H,M,Y} C、{Q,C,D,F,H,M,A,Q,R,S,Y,Y} D、{Q,A,C,S,Q,F,D,X,R,H,M,Y} 点击空白处出现下一题 下面做法最正确的是哪一项 1、 遇到火灾不管家里的任何东西找最近 的窗户跳下去 2、家里的煮饭时突然烧起来,直接拿水将 其熄灭 3、整栋大楼着火了,为了争取时间,坐电 梯下楼最快最安全 4、火灾发生后不要留恋家中的财物,及时 的逃生,生命才是最宝贵的!另外逃出 后先向周边人求助灭火。


Created with Sketch. 线 线 线 姓名 准考证 序号 考号 线 线 线 姓名 准考证 考号 2020年小王子课堂考试试题 1 3 4 5 6 7 8 9 10 答题完毕         希尔排序过程如下:排序前:(4,5,1,2,8,6,7,3,10,9) ;gap=5:(4,5,1,2,8,6,7,3,10,9);gap=2 :(1,2,4,3,7,5,8,6,10,9);gap=1:(1,2, 3,4,5,6,7,8,9,10);排序后:(1,2,3,4,5,6, 7,8,9,10) 正确答案是 点击空白处出现下一题 1、给出关键字序列{4,5,1,2,8,6,7,3, 10,9},的希尔排序过程 点击空白处出现下一题 1、美国最大的山是什么? A、阿尔卑斯山 C、麦金利山 B、喜马拉雅山 D、乌啦啦山


希尔排序算法(改)




THE END

呀哈,转眼间就把插入类的排序都讲完了呢!还挺快的哈!那么大家有什么问题随时扫描下方二维码,随时与我交流哦!坚持就是最棒哒!剧透一下,下节我们讲选择类的排序,加油吧,骚年!


扫描二维码

获取更多精彩

小王子学姐

希尔排序算法(改)

希尔排序算法(改)



往期推荐




文章都看完了不点个 吗

以上是关于希尔排序算法(改)的主要内容,如果未能解决你的问题,请参考以下文章

《算法》笔记 3 - 选择排序插入排序希尔排序

希尔排序图解与代码

算法-java代码实现希尔排序

希尔排序的介绍和希尔排序基本思想以及代码实现

排序算法——希尔排序的图解代码实现以及时间复杂度分析

排序算法之希尔排序