归并排序与快速排序的衍生问题
2017-03-15 19:59
447 查看
共同点
-都采用了分治算法逆序对的研究
-衡量数列的有序程度-暴力解法:考察每一个数对,算法复杂度:O(n^2)
归并排序求逆数对
-在归并比较的同时,可以依据比较结果,对逆序对进行计数-归并排序过程中,第一次排序完成后,分成了两个数组
[2368]/[1457]
-先对2与1进行比较
2是第一个数组里最小的数仍比1大,则逆序计数器+4
-同理可以此类推,求逆序数
取数组中第n大的元素
-普通解法:将序列排列好以后进行选取算法负杂度:O(nlogn)
快速排序解法
-每进行一次排序,相应的元素会处于他合适的位置,即序列完成排序以后的位置-可基于上一次排序的结果进行下一次排序的区域选择
-若要选取数组中第2大的元素,则意味着在大于4的部分里寻找第二大的元素,继续在该部分里递归求解即可
算法复杂度:O(n)
算法复杂度分析:采用随机化快速排序以后,快排算法的期望复杂度为O(nlogn),而求取第n大元素的期望复杂度为:n+n/2+n/4+..+1,即O(n)
相关文章推荐
- 归并排序和快速排序的衍生问题(逆序对)
- 3-9 归并排序和快速排序的衍生问题
- 归并排序和快速排序的衍生问题(一)
- 归并排序和快速排序的衍生问题(二)
- 快速排序及快速选择问题
- 分治法(归并排序、快速排序)
- 归并排序和快速排序的比较
- Scala实现冒泡排序、归并排序和快速排序
- C++:探究纯虚析构函数以及实现数组的快速排序与链表的归并排序
- 逆序对问题的另一种经典解法:归并排序
- 快速排序与归并排序
- IDEA搭建ssm框架测试衍生出的问题The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: D:\Develop\jdk7\jdk1.7.0_79\bin;
- 快速排序和归并排序比较
- 排序算法之插入排序、归并排序、快速排序
- 快速排序、归并排序、插入排序与基数排序
- 快速排序、希尔排序、插入排序、选择排序、归并排序、堆排序总结
- 快速排序与归并排序
- java中各种常用排序实现(直接插入排序、直接选择排序、堆排序、冒泡排序、快速排序和归并排序)
- 两种O(nlogn)级别的排序,归并排序和快速排序
- 快速排序问题(C++实现)