大家好,我是梁唐。今天选择的算法是希尔排序,本质上是对插入排序的一种优化。它是简单插入排序的改进版本,也称为收缩增量排序。也是第一个突破复杂度的算法。为了更好地理解它和插入排序的区别,让我们再回顾一下插入排序:for(inti=1;i-1&&nums[j]&nums){intn=nums.size();整数h=n/2;while(h>0){for(inti=h;i=h&&nums[j]>=1;}}希尔排序的原理看起来很复杂,但是代码实现却很简单。不过,这段代码虽然短小,但要写好并不容易,值得玩味。最后说一下算法的复杂度。希尔排序复杂度的证明过程非常复杂,所以书中没有详细解释。有兴趣的同学可以去搜索引擎搜索相关内容。我保证它绝对比算法本身更难理解。一般来说,我们可以把希尔排序的复杂度理解为100左右。我们通过一个小的优化,降低了排序问题的复杂度,这很了不起。排序算法虽然看起来简单,但其核心和原理一点都不简单。未来会有更多内容等着你,让我们一起期待吧。
希尔排序,一个冷门但有趣的排序算法相关文章