归并排序horange
| 2023-7-21
0  |  阅读时长 0 分钟
 
归并排序(merge sort)是高效的基于比较的稳定排序算法。和快速排序一样,也采用分治思想,先进行序列划分,再进行元素的有序合并。
 
notion image
 
 
归并排序基于分治思想将数组分段排序后合并,时间复杂度在最优、最坏与平均情况下均为,空间复杂度为 归并排序可以只使用的辅助空间,但为便捷通常使用与原数组等长的辅助数组
 
合阶段
将两个已经有序的子序列合并成一个有序序列,比如将[4,5,7,8][1,2,3,6]两个已经有序的子序列,合并为最终序列[1,2,3,4,5,6,7,8]
notion image
notion image
 
 
代码实现
 

寻找两个正序数组的中位数

题目:给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log (m+n)) 。
示例:
 

数组中的逆序对

题目:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。
示例:
notion image
合并阶段本质上是合并两个排序数组的过程,而每当遇到 左子数组当前元素 > 右子数组当前元素 时,意味着 「左子数组当前元素至末尾元素」 与 「右子数组当前元素」 构成了若干 「逆序对」 。
 
目录