【Algo】分治思想

Backto Algo Index

分治, 顾名思义, 就是分而治之. 通过把一个比较困难的大问题 解为几个子问题, 然后再依次解决()这几个比较简单的小问题, 从而解决原来的大问题.

时间上的分析

利用分块求解再汇总, 复杂度是 O ( n log n ) O(n \log n) , 比如 QuickSort, MergeSort.

而如果, 每次我们可以把求解数据规模缩小一半儿, 那么复杂度就会降为 O ( n ) O(n) , 因为
n + n 2 + n 4 + . . . + 1 = 2 n ( 1 ( 1 2 ) log 2 n + 1 ) = 2 n 1 n + \frac n 2 + \frac n 4 + ... + 1 = 2n(1-{(\frac 1 2)}^{\log_2n + 1}) = 2n -1 , 而 O ( 2 n + 1 ) = O ( n ) O(2n+1) = O(n) , 比如查找一个数组第 K 大元素.

猜你喜欢

转载自blog.csdn.net/baishuo8/article/details/83385842