题目
插入排序的时间复杂度是( )。A. O(n^2)B. O(2n)C. O(n)D. O(n(n-1)/2)
插入排序的时间复杂度是( )。
A. O(n^2)
B. O(2n)
C. O(n)
D. O(n(n-1)/2)
题目解答
答案
A. O(n^2)
解析
插入排序的时间复杂度分析需要从其算法结构入手。插入排序通过将未排序部分的元素依次插入到已排序部分的正确位置来工作。其核心步骤包括:
- 外层循环遍历所有元素(从第二个元素开始)。
- 内层循环通过比较将当前元素插入到已排序序列的正确位置。
最坏情况下(如数组完全逆序),内层循环每次需要比较已排序部分的所有元素,导致总时间复杂度为$O(n^2)$。其他选项中,$O(2n)$和$O(n)$均为线性复杂度,不符合插入排序的实际运行情况;$O(n(n-1)/2)$虽然数学上等价于$O(n^2)$,但通常直接写作$O(n^2)$,因此正确答案为A。
插入排序的时间复杂度分析步骤如下:
1. 外层循环次数
外层循环从第二个元素开始,遍历整个数组,共执行$n-1$次($n$为元素个数)。
2. 内层循环次数
每次外层循环中,内层循环负责将当前元素插入到已排序部分的正确位置。最坏情况下(如数组逆序),内层循环需要比较$i$次(第$i$次外层循环时,已排序部分有$i$个元素)。
3. 总操作次数
总操作次数为内层循环次数之和:
$\sum_{i=1}^{n-1} i = \frac{(n-1)n}{2} = O(n^2)$
4. 选项分析
- A. $O(n^2)$:正确,符合上述推导。
- B. $O(2n)$:等价于$O(n)$,错误。
- C. $O(n)$:错误。
- D. $O(n(n-1)/2)$:虽然数学上等价于$O(n^2)$,但标准表示法为$O(n^2)$,因此正确答案为A。