分治法(Devide and Conquer)的基本思想
来源:互联网 发布:陈道明知乎 编辑:程序博客网 时间:2024/05/14 04:47
分治法分为3个步骤:
Devide:分解成2个或多个子问题
Conquer:递归的解决子问题
Combine:合并
一般来说,分治法的难点可以使在Devide(如快速排序),也可以是在Combine(归并排序)。简而言之,it depends!
----------------------------------------
以下以快速排序为例
Devide:将数组中的元素分为两部分,左边部分的元素小于枢轴元素,右边的元素大于枢轴元素。
伪代码如下:
1)在最好的情况下,每次都刚好均分为一半:
T(n)=2T(n/2)+O(n)
由主定律,时间复杂度为O(nlgn)
2)在最坏的情况下,每次都分到一边(如初始时就是正序或逆序)
T(n)=T(n-1)+O(n)
由主定律,时间复杂度为O(n^2)
一般情况下,快速排序的时间复杂度为O(nlgn),快速排序相对于其他排序更快,是因为Cache机制:CPU每次从内存中不是取一字节而
是取一段,这和快速排序的顺序存储时一致的。
- 分治法(Devide and Conquer)的基本思想
- 分治法Devide-and-Conquer
- 分而治之的算法(Devide and Conquer)
- 分治法(divide-and-conquer)
- 分治法——树的遍历(Divide and Conquer
- 分治法的基本思想
- 分治算法(divide and conquer)
- 分治 Divide and Conquer
- 【Python排序搜索基本算法】之归并排序&分治法(Merge Sort and Divide & Conquer)
- 分治法(divide & conquer algorithm)的理解
- 2.2 分治法的基本思想
- 分治策略Divide and Conquer
- 分治法(divide & conquer)应用举例
- Introduction of Algorithm - Divide and Conquer(分治法)
- 分治法——主定理(Divide and Conquer
- LeetCode 169.Majority Element--Divide and Conquer(分治法)
- LeetCode 218. The Skyline Problem--Divide and Conquer(分治法)
- LeetCode 53. Maximum Subarray--Divide and Conquer(分治法)
- MFS总结
- linux
- 骗子
- qt 一个问题的处理
- 类的静态成员变量
- 分治法(Devide and Conquer)的基本思想
- WTL的拥趸在哪里?
- 手机发送短消息
- 如何修改MySQL数据库名称
- DataGridView选中行的值
- js学习 js入门必会
- 顺势而为
- 我的网站 古城百姓生活网 上线啦!!!
- VC++读写INI配置文件