(完整版)冒泡排序和选择排序
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6
55
7
43
1
18
2
9
3
13
交换
4
43
5
7
6
43
7
55
❖ 最大元素被交换到最后一个位置(位置7) ❖ 下一趟则需将次大元素交换到倒数第二个位置
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
简单排序算法 - 冒泡排序
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
1
三个整数排序
开始
输入三个整数a,b,c
Y a<b?
N
a<c?
Y
N Y
b<c?
N
输出a,b,c的值
交换a和b的值 交换a和c的值 交换b和c的值
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
5
冒泡排序方法
以7个元素为例说明冒泡排序 位置1~位置7的元素初始排列如下所示
1
43
2
18
3
9
4
13
5
55
6
7
7
43
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
9
冒泡排序方法
1 18 29 3 13 4 43 57 6 43 7 55
19 2 18 3 13 4 43 57 6 43 7 55
19 2 13 3 18 4 43 57 6 43 7 55
19 2 13 3 18 47 5 43 6 43
7 55
❖ 次大元素被交换到倒数第二个位置(位置6) ❖ 下一趟则需将第三大元素交换到倒数第三个位置,依此类推
if b<c then 交换b和c的值; if b<d then 交换b和d的值; if b<e then 交换b和e的值; /*找出第二大的数并放在b中*/ if c<d then 交换c和d的值; if c<e then 交换c和e的值; /*找出第三大的数并放在c中*/ if d<e then 交换d和e的值; /*找出第四大的数并放在d中*/ print a,b,c,d,e;
1
43
2
18
3
9
4
13
5
55
6
7
7
43
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
4
简单排序方法
简单排序方法有多种,这里我们介绍冒泡(起泡)排序法。 冒泡排序法(bubble sort)的基本思想是:通过对相邻元素的比较和
6
7
6
7
6
55
7
43
7
43
7
43
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
8
冒泡排序方法
第六步:令位置6和位置7的元素比较,若位置6的元素大,则交换
1
18
2
9
3
13
4
43
5
7
6
冒泡排序方法
第一步:令位置1和位置2的元素比较,若位置1的元素大,则交换 第二步:令位置2和位置3的元素比较,若位置2的元素大,则交换
1
43
1
18
1
18
2
18
2
43
2
9
3
9
3
9
3
43
4
13
交换 4
13
交换 4
13
5
55
5
55
5
55
6
7
6
7
6
7
7
43
7
43
743Leabharlann 西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
结束
算法:三个整数排序
BEGIN input a,b,c; /*输入三个整数*/ if a<b then 交换a和b的值; if a<c then 交换a和c的值; if b<c then 交换b和c的值; print a,b,c;
END
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
交换,使全部记录排列有序。 冒泡排序的过程:对每两个相邻的元素进行比较,若为逆序,则将
两者交换,这样的操作反复进行,直至全部记录都比较、交换完毕 为止。如此经过一趟冒泡排序之后,就将关键字最大(或最小)的元 素安排在最后一个(或第一个) 元素的位置上。然后,对后n-1个元 素重复进行同样的操作,则将具有次大(或次小)元素安排在倒数(或 正数)第二个元素的位置上。重复以上过程,直至没有元素需要交换 时为止。至此,整个序列的记录按关键字由小到大的顺序排列完毕。
2
五个整数排序
算法:三个整数排序
BEGIN input a,b,c; /*输入三个整数*/ if a<b then 交换a和b的值; if a<c then 交换a和c的值; if b<c then 交换b和c的值; print a,b,c;
END
推广至5个 整数排序
算法:五个整数排序
BEGIN input a,b,c,d,e; /*输入五个整数*/ if a<b then 交换a和b的值; if a<c then 交换a和c的值; if a<d then 交换a和d的值; if a<e then 交换a和e的值; /*找出最大数并放在a中*/
7
冒泡排序方法
第三步:令位置3和位置4的元素比较,若位置3的元素大,则交换 第四步:令位置4和位置5的元素比较,若位置4的元素大,则交换 第五步:令位置5和位置6的元素比较,若位置5的元素大,则交换
1
18
1
18
1
18
2
9
2
9
2
9
3
43
3
13
3
13
4
13
交换 4
43
交换 4
43
5
55
5
55
5
7
END
西安电子科技大学计算机学院 - School of Computer Science & Engineering, Xidian University, China
3
排序时数据集中存放在一段空间中
在前面的排序算法中,存放数据的位置(以a、b、c、d、 e表示)之间没有联系
下面,约定排序时数据集中存放在一段存储空间中 例如:下面的7个整数连续地存放在位置1~位置7中