冒泡法排序vb
方法1 大的数向后下沉) 方法1 (从前往后 大的数向后下沉)
(1) 从第1个元素开始与后一个比较,如果比后一个大则两 元素交换,依次比较到第n个元素,最终将最大的数换入 第n个元素中,a(n)不动。 (2) 重复(1) ,依次比较到第n-1个元素,最终将最大的数 换入第n-1个元素中,a(n-1)不动。 (3) 重复(1) ,依次比较到第n-2个元素,最终将最大的数 换入第n-2个元素中,a(n-2)不动。
方法2 小的数向前上升) 方法2 (从后往前 小的数向前上升)
(1) 从第n个元素开始与前一个比较,如果比前一个小两元 素交换,依次比较到第1个元素,最终将最小的数换入第1 个元素中,a(1)不动 (2) 重复(1) ,依次比较到第2个元素,最终将最小的数换 入第2个元素中,a(2)不动 (3) 重复(1) ,依次比较到第3个元素,最终将最小的数换 入第3个元素中,a(3)不动 …………………比较中…………………… (n-1) a(n)与a(n-1)比较,如果a(n)小,与a(n-1)交换,反 之,排序完成
冒泡排序法
冒泡排序法是简单的排序方法之一, 冒泡排序法是简单的排序方法之一,它和 简单的排序方法之一 气泡从水中往上冒的情况有些类似( 气泡从水中往上冒的情况有些类似(动画 演示):这里我给大家讲一下从小到大排 ):这里我给大家讲一下从 演示):这里我给大家讲一下从小到大排 序(升序排列 )。 升序排列: 升序排列:对数组中两两相邻的元素比较 将值较小的元素放在前面, 将值较小的元素放在前面,值较大的元素 放在后面,比较完毕后, 放在后面,比较完毕后,一个最大的数沉 底成为数组中的最后一个元素, 底成为数组中的最后一个元素,一些较小 的数如同气泡一样上浮一个位置。 的数如同气泡一样上浮一个位置。其具体 做法是有很多种, 做法是有很多种,下面我给大家常见的两 种:
………………比较中………………………
(n-1) a(1)与a(2)比较,如果a(1)大,与a(2)交换。反之, 排序完成。
方法1的核心代码 方法 的核心代码
For j = 10 To 2 Step -1 For i = 1 To j - 1 If a(i) > a(i + 1) Then t =3; 1) = t End If Next i Next j
方法2的核心代码 方法 的核心代码
For j = 2 To 10 For i = 10 To j Step -1 If a(i) < a(i - 1) Then t = a(i) a(i) = a(i - 1) a(i - 1) = t End If Next i Next j
练习:随机产生10个整数,并用冒泡法排序(从小到大)。
方法1 下沉) 方法 (从前往后 大的数向后下沉) 下沉 Dim a(10) As Integer Dim i%, j%, t% Print "排序前:" 排序前: 排序前 Randomize For i = 1 To 10 a(i) = Int(Rnd * 100) Print a(i); Next i For j = 10 To 2 Step -1 For i = 1 To j - 1 If a(i) > a(i + 1) Then t = a(i) a(i) = a(i + 1) a(i + 1) = t End If Next i Next j Print Print "排序后:" 排序后: 排序后 For i = 1 To 10 Print a(i); Next i 方法2 上升) 方法 (从后往前 小的数向前上升) 上升 Dim a(10) As Integer Dim i%, j%, t% Print "排序前:" 排序前: 排序前 Randomize For i = 1 To 10 a(i) = Int(Rnd * 100) Print a(i); Next i For j = 2 To 10 For i = 10 To j Step -1 If a(i) < a(i - 1) Then t = a(i) a(i) = a(i - 1) a(i - 1) = t End If Next i Next j Print Print "排序后:" 排序后: 排序后 For i = 1 To 10 Print a(i); Next i