1. 程式人生 > >排序複習查漏補缺

排序複習查漏補缺

1.2-6

有組記錄的排序碼為{ 46,79,56,38,40,84 },則利用堆排序的方法建立的初始堆為:D (2分)

  1. 79,46,56,38,40,80
  2. 84,79,56,46,40,38
  3. 84,56,79,40,46,38
  4. 84,79,56,38,40,46

這個題要知道兩點,首先你得知道堆排序是建立最大堆,第二你得會建堆

關於建堆,就是先把這組樹寫成一個完全二叉樹,然後把它調整成一個最大堆。

過程其實類似堆的刪除操作,就是每次從倒數第一個有兒子的結點開始,把每個結點都調成最大堆就好了

圖示。。。湊活看吧

 

2.

對10TB的資料檔案進行排序,應使用的方法是:C(1分)

  1. 希爾排序
  2. 堆排序
  3. 歸併排序
  4. 快速排序

對於10TB的海量資料,資料不可能一次全部載入記憶體,傳統的排序方法就不適用了,需要用到外排序的方法。外排序採用分治思想,即先對資料分塊,對塊內資料進行排序,然後採用歸併排序的思想進行排序,得到資料的一個有序序列。

3.

下列排序方法中,若將順序村吃更換為鏈式儲存,則演算法的時間效率會降低的是:D(2分)

1.插入排序;2.選擇排序;3.起泡排序;4.希爾排序;5.堆排序

  1. 僅1、2
  2. 僅2、3
  3. 僅3、4
  4. 僅4、5

這個很難

插入排序、選擇排序、起泡排序原本時間複雜度是O(n2),更換為鏈式儲存後的時間複雜度還是O(n2)。希爾排序和堆排序都利用了順序儲存的隨機訪問特性(堆排序的這個特性體現在:取出最大堆的根節點後,更新堆的過程),而鏈式儲存不支援這種性質,所以時間複雜度會增加,因此選D。

4.

2-9

{ 12,9,11,8,7,4,5,13,23 }是下列哪種方法第二趟排序後的結果? D(2分)

  1. 歸併排序
  2. 堆排序
  3. 插入排序
  4. 基數排序

因為堆排序就是每次刪除最大堆,並把它放在最後,其實這個過程有點像冒泡我覺得

5.

下列排序演算法中,哪種演算法可能出現:在最後一趟開始之前,所有的元素都不在其最終的位置上?B(設待排元素個數N>2) (2分)

  1. 氣泡排序
  2. 插入排序
  3. 堆排序
  4. 快速排序

這個很明顯就是插入排序的特點

6.2-16

若資料元素序列{ 11,12,13,7,8,9,23,4,5 }是採用下列排序方法之一得到的第二趟排序後的結果,則該排序演算法只能是:C (2分)

  1. 氣泡排序
  2. 選擇排序
  3. 插入排序
  4. 歸併排序

這個題很好!!!

考查各排序演算法的特點。
解答本題要對不同排序演算法的特點極為清楚。
對於起泡排序和選擇排序而言,每一趟過後都能確定一個元素的最終位置,而由題目中所說,前兩個元素和後兩個元素均不是最小或最大的兩個元素並按序排列。
(二路)歸併排序,第一趟排序結束都可以得到若干個有序子序列,而此時的序列中並沒有兩兩元素有序排列。
插入排序在每趟排序結束後能保證前面的若干元素是有序的,而此時第二趟排序後,序列的前三個元素是有序的,符合其特點。故正確答案是C。

7.2-19

就排序演算法所用的輔助空間而言,堆排序、快速排序、歸併排序的關係是: (1分)

  1. 堆排序 < 歸併排序 < 快速排序
  2. 堆排序 > 歸併排序 > 快速排序
  3. 堆排序 < 快速排序 < 歸併排序
  4. 堆排序 > 快速排序 > 歸併排序

一下兩個題比一下記住就好

2-21

在基於比較的排序演算法中,哪種演算法的最壞情況下的時間複雜度不高於O(NlogN)?B (1分)

  1. 氣泡排序
  2. 歸併排序
  3. 希爾排序
  4. 快速排序

作者: DS課程組

單位: 浙江大學

2-22

下列排序演算法中,時間複雜度不受資料初始狀態影響,恆為O(NlogN)的是:C (1分)

  1. 氣泡排序
  2. 直接選擇排序
  3. 堆排序
  4. 快速排序