【排序】归并类排序—归并排序(逆序数问题)
文章目录 前言 归并排序(merge sort) 逆序数 结语 微信公众号: bigsai 数据结构与算法专栏 前言 在排序中,我们可能大部分更熟悉冒泡排序、快排之类。对归并排序可能比较陌生。然而事实上归并排序也是一种稳定的排序,时间复杂度为O(nlogn). 归并排序是基于分治进行归并的,有 二路归并 和多路归并.我们这里只讲二路归并并且日常用的基本是二路归并。并且 归并排序的实现方式 有 递归形式 和 非递归形式 。要注意其中的区分(思想上没有大的区别,只是划分上会有区分后面会对比)。 并且归并排序很重要的一个应用是求序列中的逆序数个数。当然 逆序数也可以用树状数组 完成,这里就不介绍了。 归并排序(merge sort) 归并和快排都是 基于分治算法 的。分治算法其实应用挺多的,很多分治会用到递归,也有很多递归实现的算法是分治,但事实上 分治和递归是两把事 。分治就是分而治之。因为面对排序,如果不采用合理策略。每多一个数就会对整个整体带来巨大的影响。而分治就是将整个问题可以分解成相似的子问题。子问题的解决要远远高效于整个问题的解决,并且子问题的合并并不占用太大资源。 至于归并的思想是这样的: 第一次:整串先进行划分成1个一个单独,第一次是一一( 12 34 56--- )归并成若干对,分成若干2个区间.归并完( xx xx xx xx---- )这样局部有序的序列。