第三周要点:
1. quick sort(快速排序O(Nlog(N))
input: a array,unsorted
output: Same numbers sorted in increasing order
algorithm:

pseudocode for partition

the importance of choosing pivot:
worst O ( N 2 ) O(N^2) O(N2) 例子: 一个y已经排好序的数组 每次只减少了一个元素
best: : O ( N l o g ( N ) ) O(Nlog(N)) O(Nlog(N)) 例子: 每次的pivot元素都选到了中间。
而quick_sort 基本上可以达到 O ( N ∗ l o g ( N ) ) O(N*log(N)) O(N∗log(N))的复杂度
2. 证明:
can’t apply master method
decomposition method

general decomposition principle

更详细证明见课程:https://www.coursera.org/learn/algorithms-divide-conquer/exam/h06aN/problem-set-3
3. 习题解释

每个数组都有n个元素,要使小的那个数组的长度比 α n \alpha n αn大,那么快速排序中所要选择的那个pivot 元素x一定要满足
α n + 1 < = x < = n − α n \alpha n +1<=x<=n-\alpha n αn+1<=x<=n−αn 所以这样的概率对于长度为n的数组来说就是 P = n − 2 α n n = 1 − 2 ∗ α P = \frac{n-2\alpha

本文介绍了斯坦福大学算法课程中关于快速排序的内容,包括快速排序的基本思想、选择枢轴的重要性、平均时间复杂度为O(Nlog(N))的证明、习题解析以及期望的可加性原理在生日悖论中的应用,并提供了快速排序的代码实现。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



