12.排序(下)
上一章变形希尔排序gap大预排须差,gap小优化接近排序,优化效果没那么明显希望多组预排须,gap是变化的,gap大于1继续,等于1就结束,任何数除2都是3或2,也就是1,间隔n/2为一组,每组数据只有两个,不太好,所以/3,但不能保证最后是1
所以/3+1保证最后一定1
gap大于1是预排须,希尔排序一组一组是四层循环,多组并着走3层扩大数组,数据太少浪费希尔排序
先拍成有序
该成大于就是逆序
大的更快跳到后面小的更快调到前面
还是改成小于
百万比堆还快,重复数多占优势,rand就三万个数
然后后面几趟都可以算,第一趟(逆序)可以看作最坏算,第二趟不能看做最坏了第二探比4n小,不好算,最后一趟
能说出首位是1 中间超出数学水平算不出来就行
进行了几次预排须可以算如果gap/2就是logN,logN-1最后一趟直接插入排序,就把最后一趟减掉
x就是几个2,就是循环多少次
预排须次数是对数,关键里面是变化过程
怎么理解gap是几就是几组数据0-gap-1就是每一组起点,gap就是第一组第二个数据了
选择排序,遍历一遍选出最小的数,交换最左边依次,效率一点不好写个优化版本同时把最大放右边begin++ end--
上面这组不报错