起泡法的使用

博客给出了使用起泡法对十个随机数进行从小到大排序的C语言代码示例。通过定义变量控制回数和比较次数,多次比较相邻元素并交换位置,最终实现排序,还详细说明了每一回的比较过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例子:随机打印十个从大到小排列的数

#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回)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值