C 语言编程 经典例题一百道 37 输入一串数字进行排序(冒泡法)

方法一

#include <stdio.h>
int main()
{
	int a[10],b[1];    // b[ ] 用来暂时储存数据,作用是用来转换a[i]和a[i+1]的数据
	
	int i,j;

	printf("请输入10个数:\n") ;

	for (i = 0 ; i <= 9 ; i++)
	{
		scanf("%d",&a[i]) ;     // 输入10个数
	}
	for(j = 0 ; j <= 9 ; j++)      // 用来控制每个数 需要和后面的数比较几次
	{
		for (i = 0 ; i <= 9-j ; i++) // 和后面的数进行比较。比较次数由( 9-j )
		{
			if ( a[i] > a[i+1] )     // 如果a[i]>a[i+1] 就交换他们的数据
			{
				b[0] = a[i] ;

				a[i] = a[i+1] ;

				a[i+1] = b[0] ;
			}
		}
	}
	for (i = 0 ; i <= 9 ; i++)      // 输出比较后的数组
	{
		printf("%d ",a[i]) ;
	}
	printf("\n") ;

	return 0 ;

}

所谓冒泡法是,就像水中的气泡一样慢慢向上浮。应用中是比较小的 ‘ 冒到 ’ 前方。

比如 四个数 4 3 2 1

我要对它进行 升序排列(大的数在后面

步骤1   那么第一个数‘4’要进行 4 次比较 。

            然后得出 3 2 1 4 这个数列

步骤2   然后 ‘ 3 ’ 要进行 3 次比较(因为步骤1中的 ‘4’ 已经和3比较过了)

步骤3   ‘ 2 ’ 要进行1次比较

方法二:

#include <stdio.h>
int main()
{
	int a[10],b[1];    // b[ ] 用来暂时储存数据,作用是用来转换a[i]和a[i+1]的数据
	
	int i,j;

	printf("请输入10个数:\n") ;

	for (i = 0 ; i <= 9 ; i++)
	{
		scanf("%d",&a[i]) ;     // 输入10个数
	}

	for(j = 0 ; j <= 9 ; j++)      // 用来控制每个数 需要和后面的数比较几次
	{
		for (i = 0 ; i <= 9-j ; i++) // 和后面的数进行比较。比较次数由( 9-j )
		{
			while (a[i] > a[i+1])
			{

				b[0] = a[i] ;
		
				a[i] = a[i+1] ;

				a[i+1] = b[0] ;
		
			}
		}
	}

	for (i = 0 ; i <= 9 ; i++)      // 输出比较后的数组
	{
		printf("%d ",a[i]) ;
	}

	printf("\n") ;

	return 0 ;

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值