算法筆記---算法常見易錯筆試題及答案(長期更新)

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)

解析:

遞歸的空間複雜度可看成樹的高度。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章