不需要睡觉o 2022-09-29 15:54 采纳率: 94.7%
浏览 18
已结题

冒泡排序希望变得完整

冒泡排序升序,如何加一个控制语句,如果给出的数据已经是升序的,则直接跳出循环并输出


#include<stdio.h>
#define N 10
int main()
{
int a[N],i,j,t;
for(i=0;i<N;i++)
    scanf("%d",&a[i]);
for(i=0;i<N;i++){
    for(j=0;j<N-i;j++){
    if(a[j]>a[j+1]){
        t=a[j+1];
        a[j+1]=a[j];
        a[j]=t;
    }
}
}
for(i=0;i<N;i++)
printf("%d\t",a[i]);
return 0;
}
  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2022-09-29 16:08
    关注

    就是检查一趟循环是否发生数字交换,没有交换则表示已经排好序

     
    #include<stdio.h>
    #define N 10
    int main()
    {
    int a[N],i,j,t,flag = 0;
    for(i=0;i<N;i++)
        scanf("%d",&a[i]);
    for(i=0;i<N-1;i++){
         flag = 0;
        for(j=0;j<N-i-1;j++){
        if(a[j]>a[j+1]){
            t=a[j+1];
            a[j+1]=a[j];
            a[j]=t;
            flag = 1;
        }
        if(flag == 0)
            break;
    }
    }
    for(i=0;i<N;i++)
    printf("%d\t",a[i]);
    return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月7日
  • 已采纳回答 9月29日
  • 创建了问题 9月29日