对数据进行排序时,若采用直接插入排序而不采用快速排序,则可能的原因是()。
I. 大部分元素已有序
II 待排序元素数量很少
Ⅲ.要求空间复杂度为 O(1)
IV. 要求排序算法是稳定的
A. 仅 I 、Ⅱ
B. 仅Ⅲ、IV
C. 仅 I 、Ⅱ 、IV D.I 、II 、ⅢI 、IV
[tag_link]
正确答案:D
直接插入排序 和 快速排序 的特点如下表所示:
| 排序算法 | 适合初始序列情况 | 适合元素数量 | 空间复杂度 | 稳定性 |
|---|---|---|---|---|
| 直接插入排序 | 大部分元素有序 | 较少 | O(1) | 稳定 |
| 快速排序 | 基本无序 | 较多 | O(log₂n) | 不稳定 |
I. 大部分元素已有序 ✅ 正确。
直接插入排序在序列 基本有序 的情况下表现非常好,接近 O(n) 的时间复杂度,而快速排序在此场景下仍需要递归处理。
因此此项成立。
II. 待排序元素数量很少 ✅ 正确。
当元素数量较少时,插入排序的常数因子小、实现简单, 实际运行效率往往优于快速排序 ,这是实际工程中的常见优化策略(如许多库排序在小规模时使用插入排序)。
III. 要求空间复杂度为 O(1) ✅ 正确。
插入排序是 原地排序 ,空间复杂度为 O(1);
而快速排序虽然通常也是原地排序,但某些实现(尤其是递归调用)存在 O(log n) 的栈空间。
若对空间要求极严,插入排序更适合。
IV. 要求排序算法是稳定的 ✅ 正确。
插入排序是 稳定排序 ,而快速排序是 不稳定的 (原始版本)。
如果应用场景要求排序后相等元素的相对顺序不变,选择插入排序是合理的。
综上,所有说法都正确,正确答案选择 D。
组成原理 12 某计算机主频为 1GHz,程序 P 运行过程中,共执行了 10000 条指令,其中,80% 的指令执行平均需 1 个时钟周期,20% 的指令执行平均需 10 个时钟周期。
程序 P 的平均 CPI 和 CPU 执行时间分别是( )。
计算机性能指标 A. 2.8,28μs B. 28,28μs C. 2.8,28ms D. 28,28ms 查看答案与解析 收藏 正确答案: 参考 指令执行指标 ,CPI 指平均每条指令的执行需要多少个时钟周期。
由于 80% 的指令执行平均需要 1 个时钟周期,20% 的指令执行平均需要 10 个时钟周期,因此 CPI = 80% × 1 + 20% × 10 = 2.8 。
计算机主频为 1GHz,程序 P 共执行 10000 条指令,平均每条指令需要 2.8 个时钟周期,因此, CPU 执行时间= ( 10000 × 2.8 ) /1 0 9 = 2.8 × 1 0 − 5 s = 28 μ s 。