专题课程
排序>>交换排序>>梳子排序
List:
start
基本概念:
维基百科http://zh.wikipedia.org/wiki/%E6%A2%B3%E6%8E%92%E5%BA%8F
伪代码
梳子排序:
间隔gap 递减率rate(大于1的数)
比较 i 和 i+gap 位置的数字,若反序,交换,然后i+=1,直到比较i+gap超过最大索引
然后gap /= rate,再重复上面操作
直到gap=1 ,执行最后一遍梳理后结束
可以想象成 先拿一把大梳子(只有三个齿两个缝的)从第一个梳到最后一个,把两个缝隙里面反序的数交换
再换把小点的梳子,重复.
最终,中间那个齿消失(梳理相邻两个数),完成最后一遍梳理
例子:(关注gap和cmp的下标)
gap: 6 [初始设定gap=size/1.3]
gap: 4
gap: 3
gap: 2
gap: 1