冒泡法2021-02-23

冒泡法
有多个数字,通过相邻两个数的不断比较,把它们由一定的顺序排列。
例如输入十个数,由小到大输出。
#include<stdio.h>
void main()
{
int x,y,t;
int array[10];
printf(“please input the ten integer:”);
for(x=0;x<=9;x++)
{
scanf("%d",&array[x]);
}
for(y=0;y<=8;y++)
{
for(x=0;x<=8-y;x++)
{
if(array[x]>array[x+1])
{
t=array[x+1];
array[x+1]=array[x];
array[x]=t;
}
}
}
for(y=0;y<=9;y++)
{
printf("%d\n",array[y]);
}
}
在这里插入图片描述
举例说明一下原理
例如有一段数字5 4 3 2 1,由小到大输出。冒泡法就是通过5和4进行比较,(大的数往后推,小的往前走,这一段数字竖起来看就是大的数像石头一样不断下沉,小的数像气泡一样不断上升,)得到4 5 3 2 1,再通过5和3比较得到4 3 5 2 1,以此类推,第一轮比较得到4 3 2 1 5,后面忽略掉5再把前面的数字进行比较,这个时候由于数字的减少,比较的次数就会相应的减少。例如上面的五个数,会有四大轮比较,也就是忽略上一轮所得最大的数,54321依次的排到最后面,排一次得一大轮 , 而四大轮里面第一轮就会有四小轮比较,第二轮(把4放到最后)因为减少了5,就只会进行4比3,4比2 ,4比1,为三小轮比较。以此类推。假如有n个数,就会进行n-1大轮比较,假定i为大轮的第几次执行,执行小轮的次数就为n-i。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值