方法一
#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 ;
}