为了账号安全,请及时绑定邮箱和手机立即绑定

谁能帮我解释一下算法


for(i=0;i<10;i++)

    {

        if(i != 9)   

            printf("%.2f, ", arr[i]);  //%.2f表示小数点后精确到两位

        else

            printf("%.2f", arr[i]);    //%.2f表示小数点后精确到两位

    }

    for(i=8; i>=0; i--)

    {

        for(j=0;j<=i;j++)

        {

            if(      ?      )      //当前面的数比后面的数大时

            {

                double temp;    //定义临时变量temp

                ?     //将前面的数赋值给temp

                ?              //前后之数颠倒位置

                ?              //将较大的数放在后面    

            }                 

        }                

    }

    printf("\n************排队后*************\n");

    for(i=0;i<10;i++)

    {

        if(i != 9)   

            printf("%.2f, ", arr[i]);  //%.2f表示小数点后精确到两位     

        else

            printf("%.2f", arr[i]);    //%.2f表示小数点后精确到两位

    }


正在回答

2 回答

冒泡排序算法的原理如下:

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。

  2. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

  3. 针对所有的元素重复以上的步骤,除了最后一个。

  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

emmmmm好像是这样的,比较出名的一个算法,

先输出原来的数组,然后使用冒泡排序,然后在输出排序之后的算法。

先使用一个for循环输出原来的数组

然后使用一个镶套的for循环运行冒泡排序

然后再用一个for循环输出排序之后的

0 回复 有任何疑惑可以回复我~

内层j循环每次将两两比较中较大的数不断传递到下一个,最后将这一轮比较所得最大的数排列到最后,外层的i循环每次将上一轮循环去掉最大数后剩下的那组数中最大的数再次通过内层j循环传递到本轮末尾。即i循环第1轮,通过将j循环将10个数中最大的传递到最后一位;i循环第2轮,通过j循环将剩下9个数中最大数的传递到倒数第二位,以此类推。

3 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926018    人
  • 解答问题       20793    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

谁能帮我解释一下算法

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信