【Algo】分治思想

Backto Algo Index

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

时间上的分析

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

而如果, 每次我们可以把求解数据规模缩小一半儿, 那么复杂度就会降为 O ( n ) 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 n+2n+4n+...+1=2n(1(21)log2n+1)=2n1, 而 O ( 2 n + 1 ) = O ( n ) O(2n+1) = O(n) O(2n+1)=O(n), 比如查找一个数组第 K 大元素.

你可能感兴趣的:(Algo)