“冒泡排序法”:对一组数排序
假如规定整数从小到大是正序
冒泡排序的思想:
相邻两个数比较,一旦逆序就交换,两两比较一轮后确定了最大值;
然后在剩下的数中进行第二轮的两两比较,确定次大值;
在上图中,五个数据需要进行四次比较交换,
对于5个数,共进行了4轮排序
第一轮在5个数中比较了4次,确定最大值
第二轮在4个数中比較了3次,确定次大值
第三轮在3个数中比较了2次,确定第三大者
第四轮在2个数中比较了1次,确定次小值
那么:
对于n个数,共进行n-1轮排序
第一轮在n个数中比較n-1次,确定最大值
第二轮在n-1个数中比較n-2次,确定次大值
.........
第轮在n-i+1个数中比較n-i次,确定第i大值
.........
第n-1轮在2个数中比较1次,确定次小值
#include <stdio.h>
int main()
{
int a[10],i,j,t;
printf("intput 10 numbers:\n");
for(i=0;i<10;i++) //输入a[i]的值
scanf("%d",&a[i]);
for(i=1;i<=9;i++) //输入十个数,进行9轮排序
for(j=1;j<=10;j++) //一次轮要比较n-1次,第二轮要比较n-2次,.......
if(a[j-1]>=a[j])
{
t=a[j-1];a[j-1]=a[j];a[j]=t;
}
printf("the sorted numbers:\n");
for(i=0;i<10;i++)
printf("%d",a[i]);
return 0;
}