qq_57459180 2021-04-20 20:22 采纳率: 100%
浏览 819
已采纳

将一组8个实数存入数组,并进行从小到大的排序,排序后输出结果

将一组8个实数存入数组,并进行从小到大的排序,排序后输出结果。(冒泡和选择排序都可以)

  • 写回答

4条回答 默认 最新

  • 关注

    /* Note:Your choice is C IDE */
    #include "stdio.h"
    void main()
    {
        /*
            冒泡排序:
            10,8,7,20,30,9,1,50,100,-1
            
            1.循环嵌套
                1.外循环排序的轮数;
                2.内循环是每一轮的次数
                
            第一轮:
            i=0,j=1;
            8,10,7,20,30,9,1,50,100,-1
            i=0,j=2;
            7,10,8,20,30,9,1,50,100,-1
            i=0,j=3;
            7,10,8,20,30,9,1,50,100,-1
            i=0,j=4;
            7,10,8,20,30,9,1,50,100,-1
            i=0,j=5;
            7,10,8,20,30,9,1,50,100,-1
            i=0,j=6;
            1,10,8,20,30,9,7,50,100,-1
            i=0,j=7;
            i=0,j=8;
            1,10,8,20,30,9,7,50,100,-1
            i=0,j=9;
            -1,10,8,20,30,9,7,50,100,1
            第二轮:
            i=1,j=2;
            -1,8,10,20,30,9,7,50,100,1
            i=1,j=3;
            i=1,j=4;
            i=1,j=5;
            -1,8,10,20,30,9,7,50,100,1
            i=1,j=6;
            -1,7,10,20,30,9,8,50,100,1
            i=1,j=7;
            i=1,j=8;
            -1,7,10,20,30,9,8,50,100,1
            i=1,j=9;
            -1,1,10,20,30,9,8,50,100,7
        */
        int a[10]={10,8,7,20,30,9,1,50,100,-1};
        int i,j,t,k;
        printf("排序之前:\n");
        for(i=0;i<10;i++)
            printf("%d\t",a[i]);
        printf("\n");
        for(i=0;i<10;i++)
        {
            printf("i=%d,第%d轮:\n",i,i+1);
            for(j=i+1;j<=9;j++)
            {
                if(a[i]>a[j])
                {
                    t=a[i]; //t是临时变量
                    a[i]=a[j];
                    a[j]=t;    
                }
                //打印排序过程:
                printf("j=%d\t",j);
                for(k=0;k<10;k++)
                    printf("%d\t",a[k]);
                printf("\n");
                //---------------
            }    
        }
        printf("排序之后:\n");
        for(i=0;i<10;i++)
            printf("%d\t",a[i]);
        printf("\n");
        
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 为啥画版图在Run DRC会出现Connect Error?可我Calibre的hostname和计算机的hostname已经设置成一样的了。
  • ¥20 网站后台使用极速模式非常的卡
  • ¥20 Keil uVision5创建project没反应
  • ¥15 mmseqs内存报错
  • ¥15 vika文档如何与obsidian同步
  • ¥15 华为手机相册里面的照片能够替换成自己想要的照片吗?
  • ¥15 陆空双模式无人机飞控设置
  • ¥15 sentaurus lithography
  • ¥100 求抖音ck号 或者提ck教程
  • ¥15 关于#linux#的问题:子进程1等待子进程A、B退出后退出(语言-c语言)