分治策略-快速排序.md
基础思想
-
用首元素作划分标准,将输入数组划分成不超过的元素构成的数组,大于的元素构成的数组。其中,从左到右存放数组的位置。
-
递归地堆子问题和进行排序,直到子问题规模为时停止。
伪代码
算法:Quicksort(A,p,r)
输入:数组A[p..r]
输出:排好序的数组A
1 | if p < r |
初始置p=1, r=n
,然后调用上述算法。
1 | x <- A[p] |
划分时间复杂度
-
最坏情况:
-
最好情况:
利用生成递归树计算复杂度也是。
-
平均时间复杂度
首元素排好序后处在,各种情况概率为。
-
首元素出现在位置:
-
首元素出现在位置:
-
…
-
首元素出现在位置:
-
首元素出现在位置:
子问题工作来量为,
划分工作两为,
即
首元素划分后每个位置概率相等。
-
算法实现
小结
-
分支策略
-
子问题划分由首元素决定
-
最坏情况时间:
-
平均情况时间:
分治策略-快速排序.md