假设有一个包含n个元素的数组,使用快速排序算法进行排序。如果每次选择的基准元素恰好都是当前子数组中的最大元素,那么快速排序算法在这种情况下的时间复杂度是多少?
答案解析
核心考点说明:本题考察快速排序在最坏情况下的时间复杂度。重点理解基准元素的选择对算法性能的影响。解题思路分析:当每次选择的基准元素都是当前子数组的最大值时,快速排序会退化成最差情况。每次划分都会产生一个包含0个元素的子数组和一个包含 n-1 个元素的子数组。这就相当于每一轮都只解决了一个元素,而不是接近二分的划分。第一轮处理n个元素,第二轮处理n-1个元素,依次类推,共需要n轮处理。每一轮的比较次数大概等于子数组的长度,总的时间复杂度约为n + (n-1) + ... + 1,即O(n^2)。每个选项的详细分析:A. 错误。线性时间复杂度是理想情况,但在本场景下无法达到。B. 错误。O(n log n)是快速排序在平均情况下的时间复杂度。C. 正确。当基准元素总是最大(或最小)时,快速排序退化成O(n^2)。D. 错误。O(log n)通常出现在二分查找等算法中,与快速排序的最坏情况无关。易错点提醒:容易误认为快速排序的时间复杂度总是O(n log n),忽视了最坏情况的出现条件。答案的关键依据是理解快速排序在基准元素选择不当的情况下会退化到O(n^2)。
正确答案:C