Gmomotdly260 2022-06-10 10:54 采纳率: 100%
浏览 18
已结题

完成程序的编辑,语法修正,编译,断点设置、变量数据跟踪和逐步调试。

输入10个数,用“冒泡法”对10个数排序(由小到大)。冒泡法应该怎么做呀,不是很会。
通过相邻两个数之间的比较和交换,使(数值)较小的数逐渐从底部移向顶部,较大的数逐渐从顶部移向底部。这是网上查的,希望有人可以answer一下

  • 写回答

1条回答 默认 最新

  • a5156520 2022-06-10 14:31
    关注

    冒泡排序思路是,不知道有什么说清楚:
    1、用两个循环来控制冒泡排序,第一个循环控制比较到第几个位置的数的递减量
    第二个循环利用第一个循环的i经过计算控制比较到第几个位置的数
    2、经过第1个和第2个循环的控制,里面的if来比较前一个和后一个数的大小,然后交换他们的值
    参考资料:C 冒泡排序_ROOOOOOM的博客-CSDN博客_c冒泡排序
    代码如下:

    
    #include <stdio.h>
    
    //参考资料:
    //https://blog.csdn.net/qq_41228218/article/details/99060457 
    int main(void)
    {
      
      int num[10];
      int i;
      printf("请输入10个整数:\n");
      for(i=0;i<10;i++){
          scanf("%d",&num[i]);
      }
      
      //冒泡排序
      int j;
      int temp;
      //i最多取8,即数组倒数第二个数,
      //因为第一轮比较时j可以到8,即数组最后一个数,j+1 可以比较到数组最后一个数 ,即达到将最大的数放到数组最后的目的 
      //然后里层循环最后一个数的位置都往前移动一个位置,因为经过上一轮比较后,上一个位置已经放置了较大的数 
      for(i=0;i<9;i++){ 
          
          for(j=0;j<9-i;j++){
              
              if(num[j]>num[j+1]){
                  temp=num[j];
                  num[j]=num[j+1];
                  num[j+1]=temp;
              }
          }
      } 
      
      //打印结果 
      for(i=0;i<10;i++){
          printf("%d ",num[i]);
      }
      
      return 0;
      
    
    }
    
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 6月18日
  • 已采纳回答 6月10日
  • 创建了问题 6月10日

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境