数据结构教学课件6-10堆排序3

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

2 13
012563 1
0156 3
4 2035 5 24 6 42
88 7
8 91
16
13
05
23 24
42 88
91
22
堆排序
9、大根堆排序实例 实例:对关键字序列(42,13, 91,23, 24,16,05,88)所建立的初始大根堆基础上进行大根堆排序。
第6趟:先将堆顶记录R[1]与堆底记录R[3]交换;再对无序区为R[1…2]重建堆,得新的无序区[1…2]为13, 05,新的有序区R[3…8]为[16,23,24,42,88,91],如右图。
2 24048ຫໍສະໝຸດ 28 1104652 34 23 5 13 6 1065 8085 7
8 91
42
24
16
23 13
05 88
91
19
堆排序
9、大根堆排序实例 实例:对关键字序列(42,13, 91,23, 24,16,05,88)所建立的初始大根堆基础上进行大根堆排序。
第3趟:先将堆顶记录R[1]与堆底记录R[6]交换;再对无序区为R[1…5]重建堆,得新的无序区[1…5]为24, 23,16,05,13,新的有序区R[6…8]为[42,88,91],如右图。
42 1
42
2 8183
91 3
88
91
4 128338 5 24 6 16
05 7
23 24
16 05
8 1233
13
15
堆排序
8、建立初始大根堆实例 实例:对关键字序列(42,13, 91,23, 24,16,05,88)建立大根堆。
第4步:调整R[1] 。由于R[1]<R[3],所以交换R[1]与R[3]。交换后R[3]不违反堆性质,初始堆建立完 毕,如右图。
2 13
42 1
91 3
42
13
91
4 88 5 24 6 16
05 7
88 24
16 05
8 23
23
14
堆排序
8、建立初始大根堆实例 实例:对关键字序列(42,13, 91,23, 24,16,05,88)建立大根堆。
第3步:调整R[2] 。由于R[2]<R[4],所以交换R[2]与R[4];交换后R[4]又违反堆性质,即R[4]<R[8], 再交换R[4]与R[8],调整结果如右图。
2 1233
12234 1 16 3
4 05 5 2143 6 42
88 7
8 91
23
13
16
05 24
42 88
91
21
堆排序
9、大根堆排序实例 实例:对关键字序列(42,13, 91,23, 24,16,05,88)所建立的初始大根堆基础上进行大根堆排序。
第5趟:先将堆顶记录R[1]与堆底记录R[4]交换;再对无序区为R[1…3]重建堆,得新的无序区[1…3]为16, 13,05,新的有序区R[4…8]为[23,24,42,88,91],如右图。
2 1035
0153 1 16 3
05
13
16
4 23 5 24 6 42
88 7
23 24
42 88
91 8 91
24
堆排序
9、大根堆排序实例 实例:对关键字序列(42,13, 91,23, 24,16,05,88)所建立的初始大根堆基础上进行大根堆排序。
下标 初始关键字
初始堆
第1趟
第2趟 第3趟 第4趟 第5趟 第6趟 第7趟
23 13
16 05
91
18
堆排序
9、大根堆排序实例 实例:对关键字序列(42,13, 91,23, 24,16,05,88)所建立的初始大根堆基础上进行大根堆排序。
第2趟:先将堆顶记录R[1]与堆底记录R[7]交换;再对无序区为R[1…6]重建堆,得新的无序区R[1…6]为42, 24,16,23,13,05,新的有序区R[7,8]为[88,91],结果如右图。
2016
数据结构
Data structure
堆排序
讲授:丁慧
常州信息职业技术学院
02
堆排序
8、建立初始大根堆实例 实例:对关键字序列(42,13, 91,23, 24,16,05,88)建立大根堆。
第1步:调整R[4]。由于R[4]<R[8],所以交换R[4]与R[8],调整结果如右图。
2 13
12345678 42 13 91 23 24 16 05 88 42 13 91 88 24 16 05 23 42 13 91 88 24 16 05 23 42 88 91 23 24 16 05 13 91 88 42 23 24 16 05 13
17
堆排序
9、大根堆排序实例 实例:对关键字序列(42,13, 91,23, 24,16,05,88)所建立的初始大根堆基础上进行大根堆排序。
第1趟:先将堆顶记录R[1]与堆底记录R[8]交换;再对无序区为R[1…7]重建堆,得新的无序区R[1…7]为88, 24,42,23,13,16,05,新的有序区R[8] 为[91],如右图。
2 218438
189381 1 42 3
4 23 5 1234 6 16
05 7
8 9113
88
24
42
25
THANKS
42 1
91 3
42
13
91
4 23 5 24 6 16
05 7
88 24
16 05
8 88
23
13
堆排序
8、建立初始大根堆实例 实例:对关键字序列(42,13, 91,23, 24,16,05,88)建立大根堆。
第2步:调整R[3] 。由于R[3]不小于其较大孩子结点R[6],所以无需调整,结果如右图。
9412 1
91
2 88
4921 3
88
42
4 23 5 24 6 16
05 7
23 24
16 05
8 13
13
16
堆排序
8、建立初始大根堆实例 实例:对关键字序列(42,13, 91,23, 24,16,05,88)建立大根堆。
下标 调整R[4] 调整R[3] 调整R[2] 调整R[1] 初始大根堆
2 022534
204452 1 16 3
4 0253 5 13 6 4025
88 7
8 91
24
23
16
05 13
42 88
91
20
堆排序
9、大根堆排序实例 实例:对关键字序列(42,13, 91,23, 24,16,05,88)所建立的初始大根堆基础上进行大根堆排序。
第4趟:先将堆顶记录R[1]与堆底记录R[5]交换;再对无序区为R[1…4]重建堆,得新的无序区[1…4]为23, 13,16,05,新的有序区R[5…8]为[24,42,88,91],如右图。
1234567 8 42 13 91 23 24 16 05 88 91 88 42 23 24 16 05 13
88 24 42 23 13 16 05 [ 91 ]
42 24 16 23 13 05 [ 88 91 ] 24 23 16 05 13 [ 42 88 91 ] 23 13 16 05 [ 24 42 88 91 ] 16 13 05 [ 23 24 42 88 91 ] 13 05 [ 16 23 24 42 88 91 ] [ 05 13 16 23 24 42 88 91 ]
2 0153
011536 1 1065 3
4 23 5 24 6 42
88 7
8 91
13
05
16
23 24
42 88
91
23
堆排序
9、大根堆排序实例 实例:对关键字序列(42,13, 91,23, 24,16,05,88)所建立的初始大根堆基础上进行大根堆排序。
第7趟:先将堆顶记录R[1]与堆底记录R[2]交换,得新的无序区R[1]为05,新的有序区R[2…8]为[13,16, 23,24,42,88,91],由于无序区只有一条记录,归入有序区,有序区R[1…8]为[05,13,16,23,24, 42,88,91],至此,排序完成,如右图。
相关文档
最新文档