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

来源:百度知道 编辑:UC知道 时间:2024/05/16 17:26:23
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