编写程序,用起泡法对10个数排序(由小到大)

解题思路:
        将相邻两个数比较,将小的调到前头。若有6个数(8,9,5,4,2,0)。第1次比较第1个数和第2个数(8和9)的大小,如果第1个数大于第2个数,就把两个数位置交换,第2次将第2个数和第3个数(9和5)进行比较和交换……如此共进行5次,得到8,5,4,2,0,9的顺序。可以看到,最大的数9已"沉底",成为最下面一个数,而小的数"上升"。最小的数0已向上"浮起"一个位置。经第1轮(共5次)后,已得到最大的数(在最下面)。

        然后进行第2轮比较,对余下的前面5个数按上法进行比较。经过4次比较,得到次大的数8(在5个数中最下面的位置)。再进行第3轮比较,对余下的前面4个数进行比较……如此进行下去。不难看出,对6个数要比较(和交换)5轮,才能使6个数按大小顺序排列好。在第1轮中要对两个数之间的比较(和交换)进行5次,在第2轮中为4次……第5轮为1次。

        可以推知,如果有n个数,则要进行(n-1)轮比较(和交换)。在第1轮中要进行(n-1)次两两比较,在第j轮中要进行(n-j)次两两比较。
        根据以上思路写出程序,今设n=10,本例定义数组长度为11,a[0]不用,只用a[1]~a[10],以符合人们的习惯。从前面的叙述可知,应该进行9轮比较和交换。

编写程序:

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值