数据结构第8章 内部排序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第8章内部排序

【例8-1】已知关键字序列(12,77,21,65,38,7,38,53),给出采用直接插入排序方法按关键字递增序排列时的每一趟结果。

解:初始12 77 21 65 38 7 38 53

1趟12 77 21 65 38 7 38 53

2趟12 21 77 65 38 7 38 53

3趟12 21 65 77 38 7 38 53

4趟12 21 38 65 77 7 38 53

5趟7 12 21 38 65 77 38 53

6趟7 12 21 38 38 65 77 53

7趟7 12 21 38 38 53 65 77

(表示有序区)

【例8-2】待排序列为(39,80,76,41,13,29,50,78,30,11,100,7,41,86),步长因子分别取5、3、1,给出采用希尔排序方法按关键字递增序排列时的每一趟结果。

解:排序过程如下:

p=539 80 76 41 13 29 50 78 30 11 100 7 41 86

子序列分别为{39,29,100},{80,50,7},{76,78,41},{41,30,86},{13,11}。

第一趟排序结果:

p=3 29 7 41 30 11 39 50 76 41 13 100 80 78 86

子序列分别为{29,30,50,13,78},{7,11,76,100,86},{41,39,41,80}。

第二趟排序结果:

p=1 13 7 39 29 11 41 30 76 41 50 86 80 78 100

此时,序列基本“有序”,对其进行直接插入排序,得到最终结果:

7 11 13 29 30 39 41 41 50 76 78 80 86 100

【例8-3】已知序列(17,18,60,40,7,32,73,65,85),请给出采用冒泡排序法对该序列作升序排序时的每一趟的结果。

解:

初始1趟2趟3趟4趟5趟

17 17 17 17 7 7

18 18 18 7 17 17

60 40 7 18 18 18

40 7 32 32 32 32

7 32 40 40 40 40

32 60 60 60 60 60

73 65 65 65 65 65

65 73 73 73 73 73

85 85 85 85 85 85

(表示有序区)

【例8-4】已知关键字序列(38,12,21,77,65,7,38,53)给出采用快速排序方法按关键字增序排序时的第一趟块排过程,并举出一个反例说明快速排序是不稳定排序。

解:(1)

初始38 12 21 77 65 7 38 53

↑↑

low high

第一次交换

从high开始比较,得到的结果:

7 12 21 77 65 □38 53

↑↑

low high

从low开始比较,得到的结果:

7 12 21 □65 77 38 53

↑↑

low high

第二次交换

从high开始比较,得到的结果:

7 12 21 □65 77 38 53

↑↑

low high

low=high,所以第一趟快速排序的结果为:

7 12 21 38 65 77 38 53

关键字序列(2,2,1)可以作为一个反例。取第一个关键字作为支点,在一趟快排之后的结果是(1,2,2),由于2已在排序后的最终位置,2在2划分出的前一部分子表中,所以2不可能再出现在2之后,即不可能与原始序列中两者的顺序一致。此反例说明快速排序不是稳定排序。

【例8-5】已知序列(503,87,512,61,908,170,897,275,653,462),给出采用堆排序方法按关键字递增排序时的每一趟结果。

解:各趟结果如图8-1所示

(a) 初始 1 503 87 275 653 462 908 61 170 897 512 2 3 4 5 6 7 8 9 10 (b) 建堆

1

908

87

275 653 503 462 61 170 512 897 2 3 4 5 6 7 8 9 10 (c) 1趟:交换908

1 908 87 275 653

503 462 61 170 512

897 2 3 4 5 6 7 8 9 10 (d) 筛选调整 1 908 87 275 653 503 462 61 170 897 512 2 3 4 5 6 7 8 9 10

(e) 2趟:交换897和61

1 908 87

275

653 503 462 61 170 897

512 2 3 4 5 6 7 8 9 10 (f) 筛选调整

1 908 87 897 503 275 46

2 61 170 65

3 512 2 3

4

5

6

7

8

9 10

(o) 7趟:交换275和61

8 1 908

87

897

275 462 503 61

653 512

170 2

3 4 5 6 7 9 10 (p) 筛选调整

8 1 908

87 897 275

462 503 61

653

512

170

2 3

4 5

6 7 9 10

(m) 6趟:交换462和87 8 1 908

87 897 275

462 503 61

653 512 170 2

3 4 5

6 7 9 10 (n) 筛选调整

8

1 908

87 897 275

462 503

61

653 512

170

2 3 4 5

6 7 9 10 (i) 4趟:交换512和87 1 8 908

87 897 503

275 462 61 653 512 170 2 3 4 5

6 7 9 10 (j) 筛选调整

1 8 908

87

897

462 275 512

61 653 503 170

2 3 4

5

6 7

9 10 8 (g) 3趟:交换653和61

1

908

87

653

503 275 462 61 170 897 512 2

3 4 5 6 7 9 10 1 8 (h) 筛选调整

908

87

897 503

275

462 61 653 512

170

2 3

4

5

6 7 9 10 1 462

(k) 5趟:交换503和61 8 1 908

61

897 462 275 503

87 653 512 170 2

3 4 5

6 7 9 10 (l) 筛选调整

8

908

87 897 275

503

512

61

653 170

2 3 4 5 6 7 9

10

相关文档
最新文档