冒泡排序希望变得完整

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


#include
#define N 10
int main()
{
int a[N],i,j,t;
for(i=0;i"%d",&a[i]);
for(i=0;ifor(j=0;jif(a[j]>a[j+1]){
        t=a[j+1];
        a[j+1]=a[j];
        a[j]=t;
    }
}
}
for(i=0;i"%d\t",a[i]);
return 0;
}

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

 
#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;
}

应该不行吧,如果没有全部遍历比较完成,你怎么知道数据是升序还是什么顺序的。时间复杂度已经是固定的,不可能中途退出。