算法笔记---算法常见易错笔试题及答案(长期更新)

1、设有n个待排序的记录关键字,则在堆排序中需要()个辅助记录单元。
正确答案: A 你的答案: B (错误)

A. 1
B. n
C. nlog2n
D. n^2

解析:
笑以

堆排序的属于就地排序,空间复杂度为O(1),这一个辅助空间是交换词条时用来保存数据的。

2、模式串的长度是m,主串的长度是n(m<n),使用KMP算法匹配的时间复杂度是()?
正确答案: A 你的答案: C (错误)

A. O(m+n)
B. O(m∙n)
C. O(m∙log2n)
D. O(n∙log2m)

3、就平均查找长度而言,分块查找最小,折半查找次之,顺序查找最大()
正确答案: B 你的答案: A (错误)

A. 对
B.

解析:

分快查找,是将顺序表分为若干块,块内元素顺序任意,块间有序,即前一块中的最大值小于后一块中的最小值。并且
有一张索引表,每一项存放每一块的最大值和指向该块第一个元素的指针。(有点像图书馆找书)索引表有序,块内无
序。所以,块间查找用二分查找,块内用顺序查找,效率介于顺序和二分之间。

4、个数约为 50k 的数列需要从小到大排序, 数列特征是基本逆序 (多数数字从大到小,个别乱序) ,以下哪种排序算法在事先不了解数列特征的情况下性能大概率最优(不考虑空间限制)___.
正确答案: E 你的答案: D (错误)

A. 冒泡排序
B. 改进冒泡排序
C. 选择排序
D. 快速排序
E. 堆排序
F. 插入排序

解析:

基本逆序,相当于最坏情况下,求时间复杂度最优。快排会退化成O(n^2)
因此选择堆排序或归并排序,时间复杂度为nlogn

5、数据表有51233个元素,如果仅要求找出其中最大的12个元素,采用什么算法比较节省时间 ( )。
正确答案: A 你的答案: D (错误)

A. 堆排序
B. 希尔排序
C. 快速排序
D. 直接选择排序

解析:

TopK问题 选择排序为O(12*n), 堆排序为O(12lgn)

6、下列排序方法中,若将顺序存储更换为链式存储,则算法的时间效率会降低的是 。
Ⅰ.插入排序 Ⅱ.选择排序 Ⅲ.起泡排序 Ⅳ.希尔排序 Ⅴ.堆排序
正确答案: D 你的答案: A (错误)

A. 仅Ⅰ、Ⅱ
B. 仅Ⅱ、Ⅲ
C. 仅Ⅲ、Ⅳ
D. 仅Ⅳ、Ⅴ

解析:

插入排序、选择排序、起泡排序原本时间复杂度是O(n2),更换为链式存储后的时间复杂度还是O(n2)。希尔排序和堆
排序都利用了顺序存储的随机访问特性,而链式存储不支持这种性质,所以时间复杂度会增加,因此选D。

7、现有N条词以及对应的拼音串,对其排序,排序规则:首先按拼音串的字母序排序,如果拼音串相同,则按当前词所在的顺序排序,下列哪些排序算法符合条件?( )
正确答案: A D 你的答案: 空 (错误)

A. 插入排序
B. 快速排序
C. 堆排序
D. 冒泡排序

解析:

按当前词所在顺序排序即排序算法要稳定。
选择排序,快速排序,希尔排序,堆排序 都不稳定
冒泡排序,插入排序,归并排序,基数排序 都稳定

8、以下函数的时间复杂度和空间复杂度为()
正确答案: D 你的答案: C (错误)

A. T(n)=O(1),S(n)=O(1)
B. T(n)=O(n),S(n)=O(n)
C. T(n)=O(2^n),S(n)=O(1)
D. T(n)=O(2^n),S(n)=O(n)

解析:

递归的空间复杂度可看成树的高度。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章