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

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
温馨提示:内容为网友见解,仅供参考
无其他回答

谁给我解释一下冒泡排序和选择排序,最好有程序举例
冒泡法排序:将待排序的元素看作是竖着排列的"气泡",较小的元素比较轻,从而要往上浮。在冒泡排序算法中我们要对这个"气泡"序列处理若干遍。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。如果发现两个相邻元素的顺序不对,即"轻"的元素在下面,就交换它们的...

简述数据排序的三种方式
数据排序的三种方式包括冒泡排序、选择排序和插入排序。1. 冒泡排序 冒泡排序是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。例如,对数列[5, 3, 8, 4, 2]进行...

冒泡排序和选择排序的原理是什么?
首先,对于给定的数字序列45,43,56,32,15进行冒泡排序,我们可以得到排序后的结果为:15,32,43,45,56。冒泡排序是一种简单的排序算法,其工作原理是重复地遍历待排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数...

冒泡法和选择排序法有什么不同?最好举下例子
冒泡排序和选择排序都是稳定的排序方法。不同的地方是处理的过程不一样。冒泡是相邻的两两比较,把小的交换上去,每一趟比较都会得到一个最小值。一个一个的就像是冒泡一样,比较形象。如果在一趟比较中,没有发现要交换的数值,则排序完成。选择排序是从待排序队列中选出最小的值,放到已排序队列的...

举例说明冒泡排序法基本原理
冒泡就是拿第一个数和后面所有数一一相比,然后将最大的放在最后,然后再拿第二个数和后面一一相比将第二大的放在倒数第二的位置。。。一直到全部比较完,就排好序了,好比冒泡一样小的数向上走,大的数向下走。快速排序是选择一组数中的一个(一般是第一个),和其他所有的比,比它大的放在...

C语言 冒泡排序法和选择法的不同,本质区别
是这样的 区别主要在交换的方式上 每一轮都把最大或最小的元素筛选出来放在相应的位置上 这是相同的 但是 对于每一轮 比如第一轮 要把1~n 中最大的那个放到n这个位置 冒泡法每次比较和移动相邻的两项 而选择排序每次交换当前项和第n项 我把代码写出来你就懂了:冒泡:for i:=1 to n-1 do...

高分咨询:问用冒泡法和选择法分别实现对数组的排序,请举出些实例
直接选择排序的平均时间复杂度为O(n2)。(3)直接选择排序是一个就地排序 (4)稳定性分析 直接选择排序是不稳定的 选择排序是不稳定排序,而冒泡排序是稳定排序;选择排序是先在所有的未排序记录中找到一个最小(或最大的)放在最前面或者最后面;而冒跑排序则是相邻的两个记录逐个比较,不满足排序...

冒泡排序和选择排序的不同之处有哪些?
1)选择选好了(最大或最小元),需要交换(最大或最小元和当前元素不在同一位置),才交换,是选择排序;2)比较完成,需要交换就交换(元素逆序,则交换)。是冒泡选择排序;举例 选择排序:升序 i 自小到大 i前面的是已经排好序的数据。选一个当前位置i 以后的最小元素,如果位置在 i不需要...

C语言中冒泡排序法和选择排序法有哪些不同
程序分析:选择排序:1>.对于选择排序,首先理解排序的思想。给定一个数组,这种思想首先假定数组的首元素为最大(最小)的。此时就要利用3个变量i,j,k表示元素的下标。i表示当前,j表示找到的最大(最小)的下标,k用于存放每次循环中最大值的下标。2>.在掌握了程序的基本思想之后,再进行排序。

冒泡和选择排序的区分?
所以,选择排序每扫描一遍数组,只需要一次真正的交换,而冒泡可能需要很多次。比较的次数一样的。例如:1 2 3 4我们分别用a[0],a[1],a[2],a[3]存储。假设从大到小排序选择排序,是a[0]和a[1],a[2],a[3]依次比较,遇到小的就交换,这样一次下来,最大的被保存在了a[0].下次排序就...

相似回答
大家正在搜