JS排序--图解希尔排序

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

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

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

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

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

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

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

直接排序后得到 [ 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 ]

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

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

经验分享 程序员 微信小程序 职场和发展