计算机系网络教研室
计算机系网络教研室
第
第
4
4
章 构造型数据类型
章 构造型数据类型
1
1
、一维数组应用举例——冒泡法排序
、一维数组应用举例——冒泡法排序
经典算法介绍:
排序问题是程序设计中的典型问题之一,它有很广泛
的应用,比如给你一组学生成绩,要你输出前 2 0 名的成
绩。这时你就要用到排序。再比如要问你中国的 GDP 排世
界第几,你要先把各国 GDP 排个序,才知道中国在第几。
所谓排序就是将数组中的各元素的值按从小到大的顺
序或按从大到小的顺序重新排列。
排序过程一般都要进行元素值的比较和元素值的交换。
第
第
4
4
章 构造型数据类型
章 构造型数据类型
分析 :
假设有 N 个数据放在数组 a 中 , 现要把这 N 个数从小到
大排序 .
冒泡排序法的基本思想是 :
第一 : 在 a[0] 到 a[N-1] 的范围内 , 依次比较两个相邻元素
的值 ,
若 a[J]>a[J+1], 则交换 a[J] 与 a[J+1],J 的值取 0,1,2,……,N-2;
经过
这样一趟冒泡 , 就把这 N 个数中最大的数放到 a[N-1] 中 .
看图示
看图示
例 1: 用冒泡排序法对 8 个整数 {6,8,5,4,6,9,3,2} 进行从小
到大排序 .
第
第
4
4
章 构造型数据类型
章 构造型数据类型
第二 : 再对 a[0] 到 a[N-2] 的范围内再进行一趟冒泡 , 又将
该范围内的最大值换到了 a[N-2] 中 .
看图示二
看图示二
Swap
Swap
变量作用
变量作用
看图示三
看图示三
第四 : 如果在某趟冒泡过程中没有交换相邻的值 , 则说明
排序已完成 , 可以提前结束处理 .
第三 : 依次进行下去 , 最多只要进行 N-1 趟冒泡 , 就可完成
排序 .
看流程
看流程
第
第
4
4
章 构造型数据类型
章 构造型数据类型
第一讲 之 冒泡法排序
第一讲 之 冒泡法排序
现假设有
现假设有
8
8
个随机数已经在数组中,开始排序
个随机数已经在数组中,开始排序
初始状态:
初始状态:
数组
数组
a
a
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7]
a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7]
6
6
8
8
5
5
4
4
6
6
9
9
3
3
2
2
第一趟排序:
第一趟排序:
两两相邻比较:
两两相邻比较:
总结
总结
回到思路一
回到思路一
8
8
5
5
8
8
4
4
9
9
3
3
8
8
6
6
9
9
2
2
第一趟最后结果:
第一趟最后结果:
9
9