首先来看实现思路:
为了方便理解我们就任意取4个数字 :34 12 56 13
第一轮是我们第一个数字和第二个数字比较,如果左边比右边大就把大的数字放到右边,
这里是34和12比较,比12大,然后两个就交换位置变成了12 34 56 13。然后呢,34又和56比较,
比56小,不交换位置,56又和13比较,比13大,交换位置变成了
12 13 34 56 第一轮我们就找到了最大的数字56。后面第二轮再如此重复,每次比较的次数要少
1,因为我们每比较一轮,最右边就得到一个最大的数,就不用和它比较了。
int i,j,t,a[10]; //定义变量及数组为基本整型
printf("请输入10个数:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]); //从键盘中输入10个数
for(i=0;i<9;i++) //变量i代表比较的趟数
for(j=0;j<9-i;j++) //变最j代表每趟两两比较的次数
if(a[j]<a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t; //产利用中间变童实现两值互换
}
printf("排序后的顺序是:\n");
for(i=0;i<10;i++)
printf("%5d",a[i]); //将冒泡排序后的顺序输出
printf("\n");
我一直爱懵的一点:定义数组的时候,比如说:a[5],只是说我们里面有5个元素,但是我们取出来出来的时候数组下标要从a[0]开始,也就是下标比定义的空间数字少1。