您的位置:首页 > 其它

算法:选择和冒泡排序法

2012-02-08 21:22 274 查看
将随机产生的10个10-100之间的整数由大到小排序。
首先我们必须明白两个数如何比较大小并交换位置,举个例子来说,现有一个标着白糖水的水杯1盛满了红糖水,还有一个标着红糖水的水杯2盛满了白糖水,我们想要把两杯水对调,此时需要借用一个空杯子3,先把水杯1中的水倒入3中,然后把2中的水倒入1中,再把3中的水倒入2中,完成!这样就把两杯水对调了。同理,两个数也是一样,我们需要借助一个“空容器”,用代码描述这个过程就是
t=a:a=b:b=t
好了,我们继续进行排序,需要使用循环结构,选择和冒泡排序法都是分成1--9轮,即

For i = 1 to 9

Next i

不同的是,选择排序的每轮都是由该轮的第一个数分别和以后的数比较,总是拿出较大的数放到第一个位置上,继续比较,循环结束后按照每轮得到的数排列起来就是所得结果。即内层循环为

For j= i + 1 to 10

If a(i) < a(j) then

t = a(i)

a(i) =a(j)

a(j)=t

End if

Next j

冒泡排序则是每轮里相邻的两个数进行比较,拿出较小的再和下一个相邻的比较,每轮产生一个最小的数放在该轮后,内部循环为

For j = 1 to 10 - i
If a(j)<a(j+1)
then

t=a(j)

a(j) = a(j+1)

a(j+1)=t

End if

Next j

每一步都产生一个最大的数然后放到每轮的第一个位置,这样有目标的按照预期顺序选择就是选择排序;每一步都产生一个最小的数然后放到每轮的最后一个位置,这样没有目标的排除小数再比较,最后得到一排按照由大到小排列的数也得到结果的选择就是冒泡排序。现在看来,其实两种排序有着异曲同工之妙!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: