题目
在 n 个结点的顺序表中,算法的时间复杂度是 O(1)的操作是( )。A. 访问第 i 个结点(1≤i≤n)和求第 i 个结点的直接前驱(2≤i≤n)B. 在第 i 个结点后插入一个新结点(1≤i≤n)C. 删除第 i 个结点(1≤i≤n)D. 将 n 个结点从小到大排序
在 n 个结点的顺序表中,算法的时间复杂度是 O(1)的操作是( )。
A. 访问第 i 个结点(1≤i≤n)和求第 i 个结点的直接前驱(2≤i≤n)
B. 在第 i 个结点后插入一个新结点(1≤i≤n)
C. 删除第 i 个结点(1≤i≤n)
D. 将 n 个结点从小到大排序
题目解答
答案
A. 访问第 i 个结点(1≤i≤n)和求第 i 个结点的直接前驱(2≤i≤n)
解析
考查要点:本题主要考查顺序表的基本操作时间复杂度,重点在于理解不同操作在顺序表中的实现方式及其时间效率。
解题核心思路:
顺序表基于数组实现,随机访问特性使得元素的访问和前驱操作时间复杂度为O(1)。而插入、删除操作需要移动大量元素,时间复杂度为O(n)。排序操作的时间复杂度通常为O(n log n)或更高。
破题关键点:
- 直接访问元素:通过索引直接定位,无需遍历。
- 前驱操作:直接通过索引减1得到前驱元素,无需循环。
- 插入/删除操作:涉及元素移动,时间复杂度与数据量相关。
- 排序操作:复杂度高于线性时间。
选项分析
选项A
- 访问第i个结点:顺序表通过数组实现,访问第i个元素只需计算地址,时间复杂度为O(1)。
- 求第i个结点的直接前驱(i≥2):直接取i-1位置的元素,无需遍历,时间复杂度为O(1)。
结论:两个操作均为O(1),正确。
选项B
在第i个结点后插入新结点:需将i+1到n的元素后移一位,时间复杂度为O(n)。
结论:不符合O(1)。
选项C
删除第i个结点:需将i+1到n的元素前移,时间复杂度为O(n)。
结论:不符合O(1)。
选项D
排序操作:常用算法时间复杂度为O(n log n)或更高(如冒泡排序为O(n²))。
结论:不符合O(1)。