1.线性表采用链式存储时,其地址()。
A.必须是连续的 B.部分地址必须是连续的 C.一定是不连续的 D.连续与否均可
2.设顺序表的长度为 n,下列算法中,最坏情况下比较次数小于 n 的是()。
A.寻找最大项 B.堆排序 C快速排序 D.顺序查找
3.已知一个长度为 n的单链表,每个节点包含一个整数数据域和一个指向下一个节点的指针域。若要在第i个位置插入一个新节点(1≤i≤n+1)平均需要移动的节点数为()。
A.n B.n/2 C.(n-1)/2 D.0
答案在下面。
第一题答案:D
解析:采用链式存储会用到指针,指针存储着数据的内存地址,因此可以不连续。
第二题答案:A
解析:
考察时间复杂度。
A:顺序表最坏情况,拿第二项跟第一项比较,记录最大项的值,之后拿后面的项与最大项比较,找到最大项,比较n-1次。
B:堆排序的时间复杂度为**N*log(N),**限制n≥2,可以复习堆排序。
C:快排如果按相反的顺序排列,第n-1次对比后,基准元素位于中间位置,之后的次数为n-2,n-3,......1,合计n(n-1)/2,等同最坏的时间复杂度。
D:顺序查找最坏情况是目标元素不存在,或目标值在表的最后一位,最坏为n次。
另:(线性表最坏情况下查找或比较次数)
|-------------|----------|
| 查找最大项/查找最小项 | n-1 |
| 顺序查找 | n |
| 二分法查找 | log2n |
| 冒泡排序 | n(n-1)/2 |
| 快速排序 | n(n-1)/2 |
| 简单插入排序 | n(n-1)/2 |
| 堆排序 | nlog2n |
第三题答案:D
解析:链表包含指针,在i位置插入时,只需修改指针指向的位置,无需移动节点。
