例子:随机打印十个从大到小排列的数
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int a[10],temp,i,j;
srand(time(NULL));
for(i=0;i<10;i++)
a[i]=rand()%11;
for(j=0;j<9;j++)//红色字体为起泡法的使用
for(i=0;i<9-j;i++)
if(a[i]>a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
printf("从小到大为\n");
for(i=0;i<=9;i++)
printf("%d ",a[i]);
printf("\n");
}
定义变量i控制回数,变量j控制比较的次数
i=0,第0回,j=0,j<9,j++, 比较了9次
第0次比较: a[0]和a[1]比较把大值放到a[1];
第1次比较: a[1]和a[2]比较把大值放到a[2];
第2次比较: a[2]和a[3]比较把大值放到a[3];
第3次比较: a[3]和a[4]比较把大值放到a[4];
第4次比较: a[4]和a[5]比较把大值放到a[5];
第5次比较: a[5]和a[6]比较把大值放到a[6];
第6次比较: a[6]和a[7]比较把大值放到a[7];
第7次比较: a[7]和a[8]比较把大值放到a[8];
第8次比较: a[8]和a[9]比较把大值放到a[9];
i=1,第1回,j=0,j<8,j++, 比较了8次
第0次比较: a[0]和a[1]比较把大值放到a[1];
第1次比较: a[1]和a[2]比较把大值放到a[2];
第2次比较: a[2]和a[3]比较把大值放到a[3];
第3次比较: a[3]和a[4]比较把大值放到a[4];
第4次比较: a[4]和a[5]比较把大值放到a[5];
第5次比较: a[5]和a[6]比较把大值放到a[6];
第6次比较: a[6]和a[7]比较把大值放到a[7];
第7次比较: a[7]和a[8]比较把大值放到a[8];
i=2,第2回,j=0,j<7,j++, 比较了7次
第0次比较: a[0]和a[1]比较把大值放到a[1];
第1次比较: a[1]和a[2]比较把大值放到a[2];
第2次比较: a[2]和a[3]比较把大值放到a[3];
第3次比较: a[3]和a[4]比较把大值放到a[4];
第4次比较: a[4]和a[5]比较把大值放到a[5];
第5次比较: a[5]和a[6]比较把大值放到a[6];
第6次比较: a[6]和a[7]比较把大值放到a[7];
i=3,第3回,j=0,j<6,j++, 比较了6次
第0次比较: a[0]和a[1]比较把大值放到a[1];
第1次比较: a[1]和a[2]比较把大值放到a[2];
第2次比较: a[2]和a[3]比较把大值放到a[3];
第3次比较: a[3]和a[4]比较把大值放到a[4];
第4次比较: a[4]和a[5]比较把大值放到a[5];
第5次比较: a[5]和a[6]比较把大值放到a[6];
i=4,第4回,j=0,j<5,j++, 比较了5次
第0次比较: a[0]和a[1]比较把大值放到a[1];
第1次比较: a[1]和a[2]比较把大值放到a[2];
第2次比较: a[2]和a[3]比较把大值放到a[3];
第3次比较: a[3]和a[4]比较把大值放到a[4];
第4次比较: a[4]和a[5]比较把大值放到a[5];
i=5,第5回,j=0,j<4,j++, 比较了4次
第0次比较: a[0]和a[1]比较把大值放到a[1];
第1次比较: a[1]和a[2]比较把大值放到a[2];
第2次比较: a[2]和a[3]比较把大值放到a[3];
第3次比较: a[3]和a[4]比较把大值放到a[4];
i=6,第6回,j=0,j<3,j++, 比较了3次
第0次比较: a[0]和a[1]比较把大值放到a[1];
第1次比较: a[1]和a[2]比较把大值放到a[2];
第2次比较: a[2]和a[3]比较把大值放到a[3];
i=7,第7回,j=0,j<2,j++, 比较了2次
第0次比较: a[0]和a[1]比较把大值放到a[1];
第1次比较: a[1]和a[2]比较把大值放到a[2];
i=8,第8回,j=0,j<1,j++, 比较了1次
第0次比较: a[0]和a[1]比较把大值放到a[1]; (10个数一共比较了9回)