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

将一组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条)

报告相同问题?

悬赏问题

  • ¥50 adb连接不到手机是怎么回事?
  • ¥15 vs2022无法联网
  • ¥15 TCP的客户端和服务器的互联
  • ¥15 VB.NET操作免驱摄像头
  • ¥15 笔记本上移动热点开关状态查询
  • ¥85 类鸟群Boids——仿真鸟群避障的相关问题
  • ¥15 CFEDEM自带算例错误,如何解决?
  • ¥15 有没有会使用flac3d软件的家人
  • ¥20 360摄像头无法解绑使用,请教解绑当前账号绑定问题,
  • ¥15 docker实践项目