- 433
- 0
- 约2.51万字
- 约 40页
- 2017-10-05 发布于湖北
- 举报
北京大学屈婉玲算法设计与分析最新课件02
第2章 分治策略
(Divide and Conquer )
22.11 分治策略的基本思想分治策略的基本思想
2.1.1 两个熟悉的例子
22.11.22 分治算法的分治算法的一般性描述般性描述
2.2 分治算法的分析技术
2.3 改进分治算法的途径
2.3.1 通过代数变换减少子问题个数
2.3.2 利用预处理减少递归内部的计算量
2.42.4 典型实例典型实例
2.4.1 快速排序算法
2.4.2 选择问题
2.4.3 n -1次多项式在全体2n次方根上的求值
1
2.1.1 两个熟悉的例子
二分检索
算法算法22.11 BinarySearchBinarySearch((TT, ll, rr, xx))
输入:数组T,下标从 l 到 r ;数x
输出输出:jj //// 如果如果 xx 在在 TT 中中,jj 为下标为下标;否则为否则为00
1. l←1; r←n
22. whilhile ll≤≤ r ddo
3. m←⎣(l+r)/2⎦
44. ifif TT[[m]]=x ththen retturn m //// x恰好等于中位元素恰好等于中位元素
5. else if T[m]m then r ← m−1
66. ellse ll←m+11
7. return 0
二分归并排序分归并排序 MergeSort (见第1章)
2
时间复杂度分析
二分检索最坏情况下时间复杂度W(n)满足
⎧⎧ ⎢ n ⎥
⎪W (n) W (⎢ ) + 1
⎨ ⎣ 2 ⎦⎥
⎪⎪
W (1) 1
⎩⎩
可以解出可以解出W((n))=⎣⎣loggn⎦⎦ +1.
二分归并排序最坏情况下时间复杂度W(n)满足
⎧ n
⎪W (n) 2W ( ) + n − 1
⎨⎨ 22
⎪⎪
W (1) 0
⎩
可以解出可以解出WW((nn))=nnloglognn−nn ++1.1.
2.1.2 分治算法的一般性描述
分治算法 Divide-and-Conquer(P)
1. if |P | ≤ c then S(P).
2. divide P into P , P , …, P .
1 2 k
3. for i = 1 to k
4. y = Divide-and-Conquer(P )
i i
5 .Return Merge(y , y , …, y )
1 2
原创力文档

文档评论(0)