《算法导论》笔记 第7章 7.2快速排序的性能
【笔记】
最佳情况划分:两个子问题的大小都不大于n/2。
平衡的划分:每当按照常数比例进行划分时,总的时间都是O(nlogn)
【练习】
7.2-1 利用代换法证明:递归式T(n)=T(n-1)+⊙(n)的解为T(n)=⊙(n^2)。
假设
可以选择合适的常数C_1 C_2。得出T(n) = ⊙(n^2)。
7.2-2 当数组A的所有元素都具有相同值时,QUICKSORT 的运行时间是什么?
O(n^2)
7.2-3 证明:当数组 A 包含不同的元素、且按降序排序时,QUICKSORT 的运行时间是⊙(n^2)。
当元素按降序排列时,每次都是最大不对称划分,因此运行时间是⊙(n^2)。
7.2-4 对几乎已拍好序的输入进行排序,INSERTION-SORT优于QUICKSORT。
对于一个排好序的数组,QUICKSORT的运行时间是⊙(n^2)。插入排序在有序的情况下只需比较n-1次。
7.2-5 假设快速排序的每一层,所做的划分比例都是1-α:α,其中 0<α<1/2 是个常数。
证明:在对应的递归树中,叶子结点的最小深度大约是-lgn/lgα,最大深度大约是-lgn/lg(1-α)。
最小深度:设最大深度为m,每次向α分割方向下降,m次分割后仅剩1个元素 n*α^m = 1, α^m = 1/n ,两边取对数 mlgα = lg1-lgn ,m = -lgn/lgα
最大深度:同理 n*((1-α)^m) = 1, (1-α)^m = 1/n ,取对数 mlg(1-α) = -lgn 即 m = -lgn/lg(1-α)
*7.2-6 证明:对于任何常数 0<α<=1/2,在一个随机输入数组上,过程PARTITION产生比1-α:α更对称的划分的概率约为1-2α。