2013-09-22 08:51:57web
轉自:http://blog.csdn.net/lylscut/article/details/6471051shell
內排序spa
單項選擇題.net
1.在全部的排序方法中,關鍵字比較的次數與記錄的初始排列次序無關的是orm
A.希爾排序 B.起泡排序 C.插入排序 D. 選擇排序對象
2.設有1000個無序的元素,但願用最快的速度挑選出其中十個最大的元素,最好選用 什麼排序法。blog
A.起泡排序 B.快速排序 C.堆排序 D.基數排序排序
3.在待排序的元素序列基本有序的前提下,效率最高的排序方法是遞歸
A. 插入排序 B.選擇排序 C. 快速排序 D.歸併排序內存
4.一組記錄的排序碼是(46,79,56,38,40,84),利用堆排序的方法創建的初始堆爲
A.79,46,56,38,40,80
B.84,79,56,38,40,46
C. 84,79,56,46,40,38
D.84,56,79,40,46,38
5.一組記錄的關鍵碼是(46,79,56,38,40,84),則利用快速排序的方法,以第一個記錄爲基準獲得的一次劃分結果爲
A.38,40,46,56,79,84
B.40,38,46,79,56,84
C. 40,38,46,56,79,84
D. 40,38,46,84,56,79
6.一組記錄的排序碼爲(25,48,16,35,79,82,23,40,36,72),其中又五個長度爲二的有序表,按歸併排序的方法對該序列進行一次歸併後的結果爲
A.16 25 35 48 23 40 79 82 36 72
B.16 25 35 48 79 82 23 36 40 72
C.16 25 48 3579 82 23 36 40 72
D.16 25 35 48 79 23 36 40 72 82
7.排序方法中,從未排序序列中依次取出元素與已排序序列(初始時爲空)中的元素進行比較,將其放入已排序序列的正確位置上的方法,稱爲
A.希爾排序 B.起泡排序 C.插入排序 D. 選擇排序
8.排序方法中,從未排序序列中挑選元素,並將其依次放入已排序序列(初始時爲空)的一端方法,稱爲
A.希爾排序 B.歸併排序 C.插入排序 D.快速排序
9.用某種排序方法對線性表(25,84,21,47,15,27,68,35,20)進行排序時,元素序列的變化狀況以下:
(1)25,84,21,47,15,27,68,35,20.
(2)20,15,21,25,47,27,68,35,84
(3)15,20,21,25,35,27,47,68,84
(4)15,20,21,25,27,35,47,69,84
則所採用的排序方法是
A. 選擇排序 B希爾排序 C歸併排序 D 快速排序
10.下述幾種排序方法中,平均查找長度最小的是
A插入排序 B選擇排序 C 快速排序 D 歸併排序
11.下列幾種排序方法中,要求內存量最大的是
A插入排序 B選擇排序 C 快速排序 D 歸併排序
12.快速排序方法在 狀況下不利於發揮其長處
A.要排序的數據量太大
B.要排序的數據中含有太多多個相同值
C.要排序的數據已基本有序
D.要排序的數據個數爲奇數
11.2.2 填空題
1.在對一組記錄(54,38,96,23,15,72,60,45,83)進行直接插入排序時,當把第7個記錄插入到有序表時,爲尋找插入位置需比較( )次。
2.在利用快速排序方法對一組記錄(54,38,96,23,15,72,60,45,83)進行快速排序時,遞歸調用而使用的棧所能達到的最大深度爲( ),共需遞歸調用的次數爲( ),其中第二次遞歸調用是對( )一組記錄進行快速排序。
3.在堆排序中、快速排序和歸併排序中,若只從存儲空間考慮,則應首先選取( )方法,其次選取( )方法,最後選取( )方法;若只從排序結果的穩定性考慮,則應選取( )方法;若只從平均狀況下最快考慮,則應選取( )方法;若只從最壞狀況下排序最快而且要節省內存考慮,則應選取( )方法。
4在插入排序、希爾排序、選擇排序、快速排序、堆排序、歸併排序和基數排序中,排序是不穩定的有( )。
5.在插入排序、希爾排序、選擇排序、快速排序、堆排序、歸併排序和基數排序中,平均比較次數最少的排序是( ),須要內存容量最多的是( )。
6.在堆排序和快速排序中,若原始記錄接近正序或反序,則選用( ),若原始記錄無序,則最好選用( )。
7.在插入和選擇排序中,若初始數據基本正序,則選用( );若初始數據基本反序,則選用( )。
8.對n個元素的序列進行起泡排序時,最少的比較次數是( )。
11.2 基本題答案
11.2.1 選擇題答案
1.D 2.C 3.A 4.B 5.C 6.A 7.C 8.D 9.D 10.C 11.D 12.C
11.2.2 填空題答案
1.3 2.(1)2 (2) 4 (3)(23,38,15) 3.(1)堆排序 (2)快速排序 (3)歸併排序
(4)歸併排序 (5)快速排序 (6)堆排序
4.希爾排序,選擇排序,快速排序和堆排序
5.(1)快速排序 (2)基數排序
6.(1)堆排序 (2)快速排序
7.(1)插入排序 (2)選擇排序
8.n-1
解:依題意,採用起泡排序的各趟結果以下:
初始:17,18,60,40,7,32,73,65,85
1趟:17,18,40,7,32,60,65,73,85
2趟:17,18,7,32,40,60,65,73,85
3趟:17,7,18,32,40,60,65,73,85
4趟:7,17,18 ,32,40,60,65,73,85
5趟:7,17,18 ,32,40,60,65,73,85
第5趟無元素交換,則排序結束。
解:依題意,採用基數排序法排序的各趟的結果以下:
初始:503,87,512,61,908,170,897,275,653,462
1趟(按個位排序):170,61,462,512,503,653,275,87,897,908
2趟(按十位排序):503,908,512,653,61,462,170,275,87,897
3趟(按百位排序):61,87,170,275,462,503,512,653,897,908
解:依題意,採用shell排序法排序的各趟結果以下:
初始:10,18,4,3,6,12,1,9,18,8
1趟:10,1,4,3,6,12,18,9,15,8
2趟:4,1,6,3,10,8,15,9,18,12
3趟:1,3,4,6,8,9,10,12,15,18
第3趟無元素交換,則排序結束。
4.希爾排序、簡單選擇排序、快速排序和堆排序是不穩定的排序方法, 試舉例說明。
【解答】
(1) 希爾排序 { 512 275 275* 061 } 增量爲2
{ 275* 061 512 275 } 增量爲1
{ 061 275* 275 512 }
(2) 直接選擇排序 { 275 275* 512 061 } i = 1
{ 061 275* 512 275 } i = 2
{ 061 275* 512 275 } i = 3
{ 061 275* 275 512 }
(3) 快速排序 { 512 275 275* }
{ 275* 275 512 }
(4) 堆排序 { 275 275* 061 170 } 已是最大堆,交換275與170
{ 170 275* 061 275 } 對前3個調整
{ 275* 170 061 275 } 前3個最大堆,交換275*與061
{ 061 170 275* 275 } 對前2個調整
{ 170 061 275* 275 } 前2個最大堆,交換170與061
{ 061 170 275* 275 }
5.設待排序的排序碼序列爲{12, 2, 16, 30, 28, 10, 16*, 20, 6, 18}, 試分別寫出使用如下排序方法每趟排序後的結果。並說明作了多少次排序碼比較。
(1) 直接插入排序 (2) 希爾排序(增量爲5,2,1) (3) 起泡排序
(4) 快速排序 (5) 直接選擇排序 (6) 錦標賽排序
(7) 堆排序 (8) 二路歸併排序 (9) 基數排序
【解答】
(1) 直接插入排序
希爾(shell)本人採起的增量序列爲 ?n/2?, ??n/2?/2?, ??n/2?/2?/2?, …,1。通常地,增量序列可採用?nα?, ??nα?α?, ??nα?α?α?, …, 1。大量實驗代表,取α=0.45454的增量序列比取其餘的增量序列的優越性更顯著。計算 ?0.45454n? 的一個簡單方法是用整數算術計算(5*n-1)/11。須要注意,當a< 1/2時,增量序列可能不以1結束,須要加以判斷和調整。
(3) 起泡排序
(8) 二路歸併排序
採用迭代的方法進行歸併排序。設待排序的數據對象有n個。首先把每個待排序的數據對象看做是長度爲的初始歸併項,而後進行兩兩歸併,造成長度爲2的歸併項,再對它們兩兩歸併,造成長度爲4的歸併項,如此一趟一趟作下去,最後獲得長度爲n的歸併結果。