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

方法一

#include 
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次比较

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

方法二:

#include 
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 ;

}

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

你可能感兴趣的:(C 语言编程 经典例题一百道 37 输入一串数字进行排序(冒泡法))