Merge Sort和Quick Sort的衍生问题

Merge Sort和Quick Sort的衍生问题

【1】Merge Sort和Quick Sort都使用了分治算法
顾名思义,分而治之,就是将原问题,分割成同等结构的子问题,之后将子问题逐一解决后,原问题也就得到了解决。
【2】求一个数组中逆序对的数量(衡量一个数组的有序程度)
(思路1)暴力解法
在这里插入图片描述
(思路2)使用Merge Sort的思路求逆序对的个数,算法复杂度为O(nlogn)
在这里插入图片描述
要解决这个问题关键在于归并的过程,首先我们考虑1和2的大小,1比2小,1放到最终数组2的位置,显然1比前半部分2后面的所有数都要小,所以计数器加4。然后接着考虑2和4,2比4和4后面的所有数都小,组成顺序对,所以计数器不加,接着考虑3和4。以此类推。
在这里插入图片描述
在这里插入图片描述
【3】取数组中第n大的元素
(思路1)排序。算法复杂度:O(nlongn)
(思路2)Quick Sort的思路求数组中第n大元素,算法复杂度:O(n)
在这里插入图片描述
例如上图如果要求第2大的元素只需考虑4的前半部分,后半部分可以忽略,这样不断递归下去,算法复杂度就趋近于O(n)。

发布了29 篇原创文章 · 获赞 11 · 访问量 3951

猜你喜欢

转载自blog.csdn.net/weixin_41462017/article/details/104742402