正在载入在线练习界面,本页内容可直接阅读…
AK CSP › CSP-S 2023 第一轮真题 › 第10题
CSP-S 2023 第一轮 第10题:假设快速排序算法的输入是一个长度为n的已排序数组,且该快速排序算法在分治过程总
题目
假设快速排序算法的输入是一个长度为n 的已排序数组,且该快速排序算法在分治过程总是选择第一个元素作为基准元素。以下哪个选项描述的是在这种情况下的快速排序行为?
选项
- A. 快速排序对于此类输入的表现最好,因为数组已经排序。
- B. 快速排序对于此类输入的时间复杂度是 $\Theta(n\log n)$。
- C. 快速排序对于此类输入的时间复杂度是 $\Theta(n^2)$。
- D. 快速排序无法对此类数组进行排序,因为数组已经排序。
答案
C
题解
答案是 C,时间复杂度为 \(\Theta(n^2)\)。
快速排序的效率取决于每次划分是否均衡,并不是数组越有序就越快。
对于已排序数组,每次选择第一个元素作为基准,它都是当前数组的最小值(升序时)或最大值(降序时)。因此,每次划分得到的两部分长度分别为 \(0\) 和 \(n-1\),只能确定一个元素的位置。
接下来还要对长度为 \(n-1\)、\(n-2\)、……的子数组重复处理,总比较次数为: \[ (n-1)+(n-2)+\cdots+1 =\frac{n(n-1)}2 =\Theta(n^2). \]
这就是快速排序的最坏情况。数组仍然能被正确排序,所以 D 也不对。
真题版权归 CCF 所有,本站仅用于非商业教学用途。页面加载后可直接在线作答,作答记录保存在本浏览器或账号中。 京ICP备2026056990号-1
京公网安备11010502062986号