HengYan644 2023-11-15 22:40 采纳率: 25%
浏览 49
已结题

冒泡排序输出每趟结果

一个c语言程序能冒泡输出从小到大值并输出每一趟结果,且如果当数字有序时无需进行排序

  • 写回答

2条回答 默认 最新

  • threenewbee 2023-11-15 22:50
    关注
    #include <stdio.h>
     
    int main()
    {
        int a[15] = { 3,7,1,4,9,8,11,2,3,9,0,1,7,4,12 };
        for (int i = 0; i < 14; i++)
        {
            int hasswaped = 0;
            for (int j = 0; j < 14 - i; j++)
            {
                if (a[j] > a[j + 1])
                {
                    hasswaped = 1;
                    int t = a[j];
                    a[j] = a[j + 1];
                    a[j + 1] = t;
                }
            }
            printf("第%d趟排序:", i + 1);
            for (int j = 0; j < 15; j++)
            {
                printf("%d ", a[j]);
            }
            printf("\n");
            if (hasswaped == 0)
            {
                printf("第%d趟没有发生交换,退出", i + 1);
                break;
            }
        }
        return 0;
    }
    

    输出:
    第1趟排序:3 1 4 7 8 9 2 3 9 0 1 7 4 11 12
    第2趟排序:1 3 4 7 8 2 3 9 0 1 7 4 9 11 12
    第3趟排序:1 3 4 7 2 3 8 0 1 7 4 9 9 11 12
    第4趟排序:1 3 4 2 3 7 0 1 7 4 8 9 9 11 12
    第5趟排序:1 3 2 3 4 0 1 7 4 7 8 9 9 11 12
    第6趟排序:1 2 3 3 0 1 4 4 7 7 8 9 9 11 12
    第7趟排序:1 2 3 0 1 3 4 4 7 7 8 9 9 11 12
    第8趟排序:1 2 0 1 3 3 4 4 7 7 8 9 9 11 12
    第9趟排序:1 0 1 2 3 3 4 4 7 7 8 9 9 11 12
    第10趟排序:0 1 1 2 3 3 4 4 7 7 8 9 9 11 12
    第11趟排序:0 1 1 2 3 3 4 4 7 7 8 9 9 11 12
    第11趟没有发生交换,退出

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

报告相同问题?

问题事件

  • 系统已结题 11月26日
  • 已采纳回答 11月18日
  • 创建了问题 11月15日