hand5.pdf
步骤
- Divide up problem into several subproblems (of the same kind).
- Solve (conquer) each subproblem recursively.
- Combine solutions to subproblems into overall solution.
Mergesort
- Recursively sort left half.
- Recursively sort right half.
- Merge two halves to make sorted whole.
![Untitled](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/6580df76-7c3e-484c-8e55-91c34f1ad767/Untitled.png)
时间复杂度
证明1:数学归纳法
![Untitled](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/fb6297e0-370e-4927-9c84-fe4ebc4191e1/Untitled.png)
证明2:
![理解:对于每一次迭代,每一层的n总数是不变的, 然后所有的都会加到顶上,每一次向上总数都会+n, 一共会加log2N 次所以是Nlog2N](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/0da58cb0-a677-4a3e-bf40-e960935c4096/Untitled.png)
理解:对于每一次迭代,每一层的n总数是不变的, 然后所有的都会加到顶上,每一次向上总数都会+n, 一共会加log2N 次所以是Nlog2N
![取有无上下界的情况是针对奇数,可以有左半边和右半边.](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/60949d58-0365-46df-b9be-c8e4ea665454/Untitled.png)
取有无上下界的情况是针对奇数,可以有左半边和右半边.
![这个注意和之前的题的区别,n-1, 这个就没法保持每一层加的总数是定值,其实就是每一个节点都比下一层加上来的要-1了。那么要减去多少个1呢?第一种方法我们可以从上一题考虑,确实了每个节点除了叶子节点都-1了,那么总共的非叶子节点为2^层数-3 = 2^(log2N)-1 ,所以答案是NlogN-2^(logN)+1](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/452b4697-26ad-4776-80eb-b8e9bc60a439/Untitled.png)
这个注意和之前的题的区别,n-1, 这个就没法保持每一层加的总数是定值,其实就是每一个节点都比下一层加上来的要-1了。那么要减去多少个1呢?第一种方法我们可以从上一题考虑,确实了每个节点除了叶子节点都-1了,那么总共的非叶子节点为2^层数-3 = 2^(log2N)-1 ,所以答案是NlogN-2^(logN)+1
![Untitled](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/44f3e58d-1656-4bf4-8518-350c0cd98b69/Untitled.png)