冒泡排序法也叫做升序排序法,在学习C语言数组中,可以用冒泡排序法解决排序问题。
像是一个数组a[10]={3,2,4,5,1,7,6,8,9,0},若要将这数组以从小到大的顺序排序,就要将第一位和第二位进行比较,若是a[0]>a[1],就要将两个数字调换位置,依次比较,直到最后两位数比较完成,得到第一轮比较后结果为:a[10]={2,3,4,1,5,6,7,8,0,9},在这次排序中,9就排好了。依次进行第二轮比较,得到:a[10]={2,3,1,4,5,6,7,0,8,9},最后要进行9轮比较,才能将数组从小到大排序,先了解两个for循环的作用,代码如下:
for(i=0;i<9;i++)
{
for(j=0;j<10-1-i;j++)
{
if(a[j]>a[j+1])
{
x=a[j];
a[j]=a[j+1];
a[j+1]=x;
}
外层for循环是计算比较的轮数,比较9轮,里层for是代表数组下标,数组下标从0开始,第一轮比较到a[10],排好数组中最后一位数,然后第二轮比较到下标a[9],排好倒数第二个下标,因此 里层循环的结束条件取决于i。接下来是输出:
for(i=0;i<10;i++)
{
printf("%d\t",a[i]);
}
\t相当于tab键,在这for循环里,依次输出上面已经排好序的数组a[10],加上定义的代码,下面是所有流程:
#include<stdio.h>
int main()
{
int a[10]={21,45,38,66,73,14,55,99,85,10};
int i,j,x;
for(i=0;i<9;i++)
{
for(j=0;j<10-1-i;j++)
{
if(a[j]>a[j+1])
{
x=a[j];
a[j]=a[j+1];
a[j+1]=x;
}
}
}
for(i=0;i<10;i++)
{
printf("%d\t",a[i]);
}
return 0;
}
希望有帮助,我也是初学者。