最近做了一道面试题是关于希尔算法的,重新又把希尔算法复习了一遍!!!
题目是这样的 {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