快排第n趟排序结果校验
@(算法学习)
(2014.11)下列选项中,不可能是快速排序第二趟排序结果的是:
A. 2,3,5,4,6,7,9
B. 2,7,5,6,4,3,9
C. 3,2,5,4,7,6,9
D. 4,2,3,5,7,6,9
分析:只需要掌握一点就可以解出这个问题:每趟排序就有一个元素排在了最终的位置上。那么就是说,第n趟结束,至少有n个元素已经排在了最终的位置上。
所以我们把最终排序结果写出来:
2,3,4,5,6,7,9去与每一项做比较即可快速判断。
比如A:
2,3,4,5,6,7,9
2,3,5,4,6,7,9
有五个都已经满足了,则肯定可以是2趟快排的结果。
B:
2,3,4,5,6,7,9
2,7,5,6,4,3,9
有两个,则满足。
C:
2,3,4,5,6,7,9
3,2,5,4,7,6,9
只有一个,不满足。
D:
2,3,4,5,6,7,9
4,2,3,5,7,6,9
有两个满足。
反之,找到两个就可以死反向构造符合条件的快排。比如我们以D为例,且以严版算法为准,每次Partion时用第一个为pivot。
4,2,3,5,7,6,9
假设