3.4冒泡排序算法
(
k = A(j): A(j) = A(j - 1): A(j - 1) = k
)
End If Next j Next i 两个数进行数据交换, 就象两杯水进行交换, 需要再拿一个空杯
总结(*)
数组A(n) For i = 0 To n-1 For j = n To i + 1 Step -1 数组d(1 to n) For i = 1 To n-1 For j = n To i + 1 Step -1 i 控制循环次数 j 控制元素对比与交换
3.4
对数据进行排序
冒泡排序
“明日之星英语演讲大赛” 评分 出来了, 需要选出每组前三名进入 决赛。我们需要设计程序, 对选手 成绩进行排序。 那么我们应该怎样做呢?要解决 这个问题,那么就让我们一起来学习 排序算法。
排序的意义
排序是为了将一组杂乱的数据变 成一组有序的数据。(递增或递 减)
A(0) A(1) A(2) A(3) A(4)
这启发我们把一个数组的一端比做 水底而把另一端想像成水面,不断把较 小的数据移向一端或把较大的数据移向 另一端,最终就可以得到排好序的数组。 在这种排序的过程中,大的数就如气泡 一样逐层下沉,而小的数逐个上浮,因 此被形象地比喻成“j 从 4 开始到1 For j=4 to 1 step -1
• • •
当i 从0到3 变化时 每次 j 从4 到i+1 时 d(j)比d(j-1)小,则交换它们
if d(j)<d(j-1) then 交换d(j) 和d(j-1)的值 第2次冒泡排序时(i=1) j 从 4 开始到2 For j=4 to 2 step -1 if d(j)<d(j-1) then 交换d(j) 和d(j-1)的值 第3次冒泡排序时(i=2) j 从 4 开始到3 For j=4 to 3 step -1 if d(j)<d(j-1) then 交换d(j) 和d(j-1)的值 第4次冒泡排序时(i=3) j 从 4 开始到4 For j=4 to 4 step -1
if d(j)<d(j-1) then 交换d(j) 和d(j-1)的值
当i 从0到3 变化时 每次 j 从4 到i+1 时 程序代码:
A(j)比A(j-1)小,则交换它们
For i = 0 To 3 For j = 4 To i + 1 Step -1
If A(j) < A(j - 1) Then
排序法的使用时非常频繁的, 在实践中,人们设计出了许多好的 算法,如交换排序、插入排序、以 及选择排序等等。各种算法有其自 身的特点与适用范围,今天我们来 学习其中人们较常用的一种: 冒泡排序法。
冒泡法排序
“冒泡法排序”也叫“起泡法排序” , 是一种比较简单、易懂的交换排序方法,它 通过将相邻元素进行比较和交换,逐步将一 个无序序列排列为一个有序序列。 将元素按从小到大的顺序排列称为升序排 列,反之称为降序排列。
冒泡排序
理解:冒泡排序是在一列数据中把较小的数据逐次 向上推移的一种排序技术。 (观赏FLASH)
根据棋牌规则,把下列5张牌从小排到大排列
冒泡排序
用数组来存储一系列同类型的数据,然后调 整数组中的元素. 例如: dim A(4) as integer ‘定义一个数组变量A
图3-14 冒泡法排序示意图