“21天好习惯” 第一期 -16

“冒泡排序法”:对一组数排序

        假如规定整数从小到大是正序


冒泡排序的思想:
相邻两个数比较,一旦逆序就交换,两两比较一轮后确定了最大值;
然后在剩下的数中进行第二轮的两两比较,确定次大值;

 在上图中,五个数据需要进行四次比较交换,

对于5个数,共进行了4轮排序
第一轮在5个数中比较了4次,确定最大值
第二轮在4个数中比較了3次,确定次大值
第三轮在3个数中比较了2次,确定第三大者
第四轮在2个数中比较了1次,确定次小值

那么:
 

对于n个数,共进行n-1轮排序
第一轮在n个数中比較n-1次,确定最大值
第二轮在n-1个数中比較n-2次,确定次大值

.........
第轮在n-i+1个数中比較n-i次,确定第i大值

.........
第n-1轮在2个数中比较1次,确定次小值

#include <stdio.h>
int main()
{
	int a[10],i,j,t;
	printf("intput 10 numbers:\n");
	
	for(i=0;i<10;i++) 				//输入a[i]的值
		scanf("%d",&a[i]);
	
	for(i=1;i<=9;i++)				//输入十个数,进行9轮排序
		
			for(j=1;j<=10;j++)		//一次轮要比较n-1次,第二轮要比较n-2次,.......
				
					if(a[j-1]>=a[j])
						{
							t=a[j-1];a[j-1]=a[j];a[j]=t;
						}
				
		
		
		printf("the sorted numbers:\n");
		
		for(i=0;i<10;i++)
			printf("%d",a[i]);
		
		
	return 0;		
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值