- 1
- 0
- 约1.14万字
- 约 13页
- 2023-02-20 发布于上海
- 举报
冒泡排序算法
在解释冒泡排序算法之前,先来介绍把 10 个数(放在数组A 中)中最大的那个数放在
最后位置上的一种算法。算法描述如下:
(1)从数组A[1]到A[10],把相临的两个数两两进行比较。即A[1]和A[2] 比较,
比较完后A[2]再与A[3] 比较,……最后是A[9]和A[10] 比较。
(2)在每次进行比较的过程中,如果前一个数比后一个数大,则对调两个数,也
就是说把较大的数调到后面,较小的调到前面。比如在第一次的比较中,如果A[1] 比A[2]
大则A[1]和A[2] 的值就互换。下图用6 个数据来说明以上的算法。
假设6 个数据是:A[]=5 7 4 3 8 6
A[1] A[2] A[3] A[4] A[5] A[6]
5 7 4 3 8 6 第一次,A[1]=5 和A[2]=7 比较,75,不进
行对调。
5 7 4 3 8 6 第二次,A[2]=7 和A[3]=4 比较,47,
进行对调,
那么第二次比较完后的数据是 5 4
7 3 8 6
5 4 7 3 8 6 第三次,A[3]=7 和A[4]=3 比较,37,
进行对调,
那么第三次比较完后的数据是 5 4
3 7 8 6
5 4 3 7 8 6 第四次,A[4]=7 和A[5]=8 比较,87,
不进行对调。
5 4 3 7 8 6 第五次,A[6]=6 和A[5]=8 比较,68,
进行对调,
那么第五次也就是最后一次的结果
是
5 4 3 7 6 8
由上例可以看出,对于6 个数,排好一个数(最大的数)需要进行5 次比较,可以
推断出,对于N 个数,一趟需要 N-1 次比较操作,
上述算法已经把 N 个数中最大的数放到了 A[N] 中,再重复上述算法,把 A[1]到
A[N-1] 中最大的数放到A[N-1] 中,这样 A[N-1] 中存放的就是第二大的数,接着把A[1]
到A[N-2] 中最大的数放到A[N-2] 中,……最后把A[1]到A[2] 中大的那个数放到A[2] 中,
每重复一次两两比较后,比较的范围就朝前移动一个位置,此算法经过N-1次就完成了
A[1]到A[N]中的的数由小到大的排列。
注意:如果要由大到小排列则在比较时前一个数比后一个数小就进行对调,方法相反。
由此可以看出,冒泡法的基本思想就是:在待排序的数据中,先找到最小(大)的
数据将它放到最前面,再从第二个数据开始,找到第二小(大)的数据将它放到第二个
位置,以此类推,直到只剩下最后一个数为止。这种排序方法在排序的过程中,是小的
数就如气泡一样逐层上浮,而使大的数逐个下沉,于是就形象地取名为冒泡排序,又名
起泡排序。
冒泡排序可用图3所示的流程图表示:
开 始
J:=1
I:=1
N
A[I]A[I+1]
A[I]与A[I+1]对调
Y
I:=I+1
IN--J
N
Y
J:=J+1
N
JN--1
原创力文档

文档评论(0)