有顺序判断的冒泡排序
#include<stdio.h>
#define MAX 1000000
int arr[MAX] = {0};
int main() {
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
bool flag = true; //定义一个布尔变量用于判断排序是否提前完成
for(int i = 1; i < n && flag; i++) {
flag = false; //若已经有序则结束循环
for(int j = 0; j < n - i; j++) {
if(arr[j + 1] > arr[j]) {
int tem = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = tem;
flag = true; //本次扫描若有元素交换,则进行下次扫描
}
}
}
for(int i = 0; i < n; i++){
i && printf(" ");
printf("%d", arr[i]);
}
return 0;
}