JS排序--图解希尔排序

最近做了一道面试题是关于希尔算法的,重新又把希尔算法复习了一遍!!!

题目是这样的 {55,26,33,80,70,90,6,30,40,20} 第一轮排序结果是多少?

第一步:增量值=10/2=5;

JS排序--图解希尔排序_第1张图片

就是分为 [ 55  90 ] , [ 26  6 ] , [ 33  30 ] , [ 80  40 ] ,  [ 70  20 ] 这五个组,然后进行直接排序,就是把没个组里的小的放到前面得到

 [ 55  90] , [ 6   26] , [ 30  33 ] , [ 40  80 ] ,  [ 20  70 ] 

                   JS排序--图解希尔排序_第2张图片

第二步:增量值=5/2=2 

就是把它再分为两个组  [ 55  30  20  26  80 ] 和 [ 6  40  90  33  70 ]  

            JS排序--图解希尔排序_第3张图片

直接排序后得到  [ 20  26  30  55  80 ]  和  [ 6  33  40  70  90 ]

      

第三步:增量值=2/2=1

分为一个组  [ 20  6  26  33  30  40  55  70  80  90 ]  进行直接排序得到  [ 6  20  26  30  33  40  55  70  80  90  ]

JS排序--图解希尔排序_第4张图片

这就是希尔排序最后的结果!!!

但是这道题问的是增量值为5的时候也就是第一次排序结果为  55  6  30  40  20  90  26  33  80  70




你可能感兴趣的:(唯美的Js)