排序複習查漏補缺
1.2-6
有組記錄的排序碼為{ 46,79,56,38,40,84 },則利用堆排序的方法建立的初始堆為:D (2分)
- 79,46,56,38,40,80
- 84,79,56,46,40,38
- 84,56,79,40,46,38
- 84,79,56,38,40,46
這個題要知道兩點,首先你得知道堆排序是建立最大堆,第二你得會建堆
關於建堆,就是先把這組樹寫成一個完全二叉樹,然後把它調整成一個最大堆。
過程其實類似堆的刪除操作,就是每次從倒數第一個有兒子的結點開始,把每個結點都調成最大堆就好了
圖示。。。湊活看吧
2.
對10TB的資料檔案進行排序,應使用的方法是:C(1分)
- 希爾排序
- 堆排序
- 歸併排序
- 快速排序
對於10TB的海量資料,資料不可能一次全部載入記憶體,傳統的排序方法就不適用了,需要用到外排序的方法。外排序採用分治思想,即先對資料分塊,對塊內資料進行排序,然後採用歸併排序的思想進行排序,得到資料的一個有序序列。
3.
下列排序方法中,若將順序村吃更換為鏈式儲存,則演算法的時間效率會降低的是:D(2分)
1.插入排序;2.選擇排序;3.起泡排序;4.希爾排序;5.堆排序
- 僅1、2
- 僅2、3
- 僅3、4
- 僅4、5
這個很難
插入排序、選擇排序、起泡排序原本時間複雜度是O(n2),更換為鏈式儲存後的時間複雜度還是O(n2)。希爾排序和堆排序都利用了順序儲存的隨機訪問特性(堆排序的這個特性體現在:取出最大堆的根節點後,更新堆的過程),而鏈式儲存不支援這種性質,所以時間複雜度會增加,因此選D。
4.
2-9
{ 12,9,11,8,7,4,5,13,23 }是下列哪種方法第二趟排序後的結果? D(2分)
- 歸併排序
- 堆排序
- 插入排序
- 基數排序
因為堆排序就是每次刪除最大堆,並把它放在最後,其實這個過程有點像冒泡我覺得
5.
下列排序演算法中,哪種演算法可能出現:在最後一趟開始之前,所有的元素都不在其最終的位置上?B(設待排元素個數N>2) (2分)
- 氣泡排序
- 插入排序
- 堆排序
- 快速排序
這個很明顯就是插入排序的特點
6.2-16
若資料元素序列{ 11,12,13,7,8,9,23,4,5 }是採用下列排序方法之一得到的第二趟排序後的結果,則該排序演算法只能是:C (2分)
- 氣泡排序
- 選擇排序
- 插入排序
- 歸併排序
這個題很好!!!
考查各排序演算法的特點。
解答本題要對不同排序演算法的特點極為清楚。
對於起泡排序和選擇排序而言,每一趟過後都能確定一個元素的最終位置,而由題目中所說,前兩個元素和後兩個元素均不是最小或最大的兩個元素並按序排列。
(二路)歸併排序,第一趟排序結束都可以得到若干個有序子序列,而此時的序列中並沒有兩兩元素有序排列。
插入排序在每趟排序結束後能保證前面的若干元素是有序的,而此時第二趟排序後,序列的前三個元素是有序的,符合其特點。故正確答案是C。
7.2-19
就排序演算法所用的輔助空間而言,堆排序、快速排序、歸併排序的關係是: (1分)
- 堆排序 < 歸併排序 < 快速排序
- 堆排序 > 歸併排序 > 快速排序
- 堆排序 < 快速排序 < 歸併排序
- 堆排序 > 快速排序 > 歸併排序
一下兩個題比一下記住就好
2-21
在基於比較的排序演算法中,哪種演算法的最壞情況下的時間複雜度不高於O(NlogN)?B (1分)
- 氣泡排序
- 歸併排序
- 希爾排序
- 快速排序
作者: DS課程組
單位: 浙江大學
2-22
下列排序演算法中,時間複雜度不受資料初始狀態影響,恆為O(NlogN)的是:C (1分)
- 氣泡排序
- 直接選擇排序
- 堆排序
- 快速排序