1-1算法分析的两个主要方面是时间复杂度和空间复杂度的分析。
T
1-2在具有N个结点的单链表中,访问结点和增加结点的时间复杂度分别对应为O(1)和O(N)。
F
1-3仅基于比较的算法能得到的最好的“最坏时间复杂度”是O(NlogN)。
T
1-4对N个记录进行快速排序,在最坏的情况下,其时间复杂度是O(NlogN)。
F
1-5(neuDS)直接插入排序算法在最好情况下的时间复杂度为O(n)。
T 1-25如果一个问题可以用动态规划算法解决,则总是可以在多项式时间内解决的。
F
1-26最优二叉搜索树的根结点一定存放的是搜索概率最高的那个关键字。
F
1-27用动态规划而非递归的方法去解决问题时,关键是将子问题的计算结果保存起来,使得每个不同的子问题只需要被计算一次。子问题的解可以被保存在数组或哈希散列表中。
T
2-1
用二分查找从100个有序整数中查找某数,最坏情况下需要比较的次数是:
A.7
B.10
C.50
D.99
2-2用分治法解决一个规模为N的问题。下列哪种方法是最慢的?
A.每步将问题分成规模均为N/3的2个子问题,且治的步骤耗时O(N)
B.每步将问题分成规模均为N/3的2个子问题,且治的步骤耗时O(NlogN)
C .每步将问题分成规模均为N/2的3个子问题,且治的步骤耗时O(N)
D.每步将问题分成规模均为N/3的3个子问题,且治的步骤耗时O(NlogN)
2-3
(NeuDS_C++)对线性表进行二分查找时,要求线性表必须( )。
A.以顺序方式存储
B.以链接方式存储
C .以顺序方式存储,且结点按关键字有序排序
D.以链接方式存储,且结点按关键字有序排序
2-4
下列排序算法中,哪种算法可能出现:在最后一趟开始之前,所有的元素都不在其最终的位置上?(设待排元素个数N>2)
A.冒泡排序
B .插入排序
C.堆排序
D.快速排序
2-7
对N个记录进行归并排序,空间复杂度为:
A.O(logN)
B.O(N)
C.O(NlogN)
D.O(N 2)
2-8
采用递归方式对顺序表进行快速排序,下列关于递归次数的叙述中,正确的是:
A.每次划分后,先处理较长的分区可以减少递归次数
B.每次划分后,先处理较短的分区可以减少递归次数
C .递归次数与每次划分后得到的分区处理顺序无关
D.递归次数与初始数据的排列次序无关
2-9
若数据元素序列{ 12, 13, 8, 11, 5, 16, 2, 9 }是采用下列排序方法之一得到的第一趟排序后的结果,则该排序算法只能是:
A.快速排序
B.选择排序
C.堆排序
D.归并排序
2-10
在外排序中,设我们有5个长度分别为2、8、9、5、3的有序段。则下列哪种归并顺序可以得到最短归并时间?
A.归并长度为2和3的有序段,得到段Run#1;将Run#1与长度为5的有序段归并,得到段Run#2;将Run#2与长度为8的有序段归并,得到段Run#3;将Run#3与长度为9的有序段归并
B.归并长度为2和3的有序段,得到段Run#1;将Run#1与长度为5的有序段归并,得到段Run#2;归并长度为8和9的有序段,得到段Run#3;归并Run#2和Run#3
C.归并长度为2和3的有序段,得到段Run#1;归并长度为5和8的有序段,得到段Run#2;归并Run#1和Run#2,得到段Run#3;将Run#3与长度为9的有序段归并
D.归并长度为2和3的有序段,得到段Run#1;归并长度为5和8的有序段,得到段Run#2;将Run#2与长度为9的有序段归并,得到段Run#3;归并Run#1和Run#3
2-28
在动态规划中,我们要推导出一个子问题的解与其他子问题解的递推关系。要将这种关系转换为自底向上的动态规划算法,我们需要以正确的顺序填写子问题解的表格,使得在解任一子问题时,所有它需要的子问题都已经被解决了。在下列关系式中,哪一个是不可能被计算的?
A.A(i,j)=min(A(i−1,j),A(i,j−1),A(i−1,j−1))
B.A(i,j)=F(A(min{i,j}−1,min{i,j}−1),A(max{i,j}−1,max{i,j}−1))
C.A(i,j)=F(A(i,j−1),A(i−1,j−1),A(i−1,j+1))
D.A(i,j)=F(A(i−2,j−2),A(i+2,j+2))
2-29给定递推方程 f i,j,k =f i,j+1,k+min 0≤l≤k{f i−1,j,l +w j,l }。要通过循环解此方程,我们一定不能用下列哪种方法填表?
A.for k in 0 to n: for i in 0 to n: for j in n to 0
B.for i in 0 to n: for j in 0 to n: for k in 0 to n
C.for i in 0 to n: for j in n to 0: for k in n to 0
D.for i in 0 to n: for j in n to 0: for k in 0 to n