题目
快速排序在最坏情况下的时间复杂度为 $ O(n \log n) $,可以通过随机化选择基准值(pivot)的方法完全避免退化。
答案:B
考点
快速排序时间复杂度分析
解题思维
分析时间复杂度时关注循环层数和每层迭代次数,递归算法则分析递归树。注意最坏/最好/平均情况的区别。
常见错误
分析复杂度时注意外层循环和内层循环的关联。例如内外两层都到n的循环不一定是O(n²),要看内层是否每次都在缩小。
详细解析(节选)
【考点】快速排序|时间复杂度|随机化
1. 🎯 考纲定位
本考点位于 GESP 八级算法模块,专门考查对经典排序算法复杂度性质的精确掌握。命题人卡住的是"平均 vs 最坏"的混淆——多数考生看到 O(n log n) 就默认是平均情况,却误以为最坏也如此,这是八级学生最容易栽跟头的地方。
同考点真题
- 第 28 题· NOIP 2008 普及组初赛试题 · 答案 a[left]a[j]<valuea[j]<=valuevalue>a[j]value>=a[j]a[i]>valuea[i]>=valuea[i]=value;i+1,right,nFindKth(left,i-1,n);看解析 →
- 第 27 题· NOIP 2008 提高组初赛试题 · 答案 a[left];a[j]<valuea[j]<=valuea[i]>valuea[i]>=valuea[i] = value; i + 1,right,n FindKth(left, i – 1, n);看解析 →
- 第 15 题· NOIP 2009 普及组初赛试题 · 答案 D看解析 →
- 第 17 题· NOIP 2009 普及组初赛试题 · 答案 D看解析 →
- 第 8 题· NOIP 2009 提高组初赛试题 · 答案 A看解析 →