谁给我解释一下冒泡排序和选择排序,最好有程序举例

谁给我解释一下冒泡排序和选择排序,最好有程序举例

VB的
冒泡法排序:将待排序的元素看作是竖着排列的"气泡",较小的元素比较轻,从而要往上浮。在冒泡排序算法中我们要对这个"灶知气泡"序列处理若干遍。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。如果发现两个相邻元素的顺序不对,即"轻"的元素在下面,就交换它们的位置。显然,处理一遍之后,"最轻"的元素就浮到了最高位置;处理二遍之后,"次轻"的元素就浮到了次高位置。在作第二遍处理时,由于最高位置上的元素已是"最轻"元素,所以不必检查。一般地,第i遍处理时,不必检查第i高位置以上的元素,因为经过前面i-1遍的处理,它们已正确地排好序。这个算法可实现如下。
示例如下图有4个数据分别存放于数组元素A(1)A(2)A(3) A(4)中:

A(1) 27
A(2) 36
A(3) 32
A(4) 18

处理过程(按从小到大排序):
第1遍:从最后一个数据开始往前比较相邻两个元素的大小, A(4)与A(3)、A(3)与A(2)、A(2)与A(1)比较,若前面的数据小则交换,处理完A(1)为最小的数据--即第一个泡泡。

A(1) 27 A(1) 27 A(1) 27 A(1) 18
A(2) 36 A(2) 36 A(2) 18 A(2) 27
A(3) 32 A(3) 18 A(3) 36 A(3) 36
A(4) 18 A(4) 32 A(4) 32 A(4) 32
第2遍:从最后一个数据开始往前比较相邻两个元隐庆消素的大小, A(4)与A(3)、A(3)与A(2)比较,若前面的数据小则交换,处理完A(2)为次小的数据--即第2个泡泡。
A(1) 18 A(1) 18
A(2) 27 A(2) 27
A(3) 36 A(3) 32
A(4) 32 A(4) 36
第3遍:从最后一个数据开始往前比较相邻两个元素的大小, A(4)与A(3)比较,若前面的数据小则交换,处理完A(3)为次小的数据--即第3个泡泡。
A(1) 18 A(1) 18
A(2) 27 A(2) 27
A(3) 32 A(3) 32
A(4) 36 A(4) 36

4个数据通过3遍处理,数组A中最小、第2小、第3小的数据分别存储在A(1)A(2)A(3)中,第4遍不用差脊再进行,因为A(4)=36中必然为最大数据,然后按顺序输出A(1)A(2)A(3) A(4)就是从大到小排序后的结果
结论:在冒泡法排序中,N个数据经过N-1轮处理(处理过程为依次找第1大、第2大。。。第N-1小的数据),完成排序
参考程序:
Dim a(1 To 10) As Integer
For I = 1 To 10
a(I) = InputBox("PLEASE INPUT DATA ")
Next I
For I = 1 TO 9
For J =10 To I+1 STEP -1
If a(J)> a(J-1) Then T = a(I): a(I) = a(J): a(J) = T
Next J
Next I
For I = 1 To 10
MsgBox ("第" + Str(I) + "个" + Str(a(I)))
Next I

修正:
Dim a(1 To 10) As Integer

For I = 1 To 10

a(I) = InputBox("PLEASE INPUT DATA ")

Next I

For I = 1 TO 9

For J =10 To I+1 STEP -1

If a(J)< a(J-1) Then T = a(j-1): a(j-1) = a(J): a(J) = T

Next J

Next I

For I = 1 To 10

MsgBox (Str(a(I)))

Next I
← 上一篇: 下一篇: →