冒泡排序优化
【问题描述】
有n个10以内的随机数, 请利用冒泡排序将他们按照从小到大的顺序排列并输出。 输入: 两行, 第一行一个整数n, 第二行n个随机正整数。( 1<=n<=100 ) 输出: 一行, 升序排列的整数序列。
【样例输入】
6
1 2 5 3 4 6
【样例输出】
1 2 3 4 5 6
#include<iostream> using namespace std; int main(){ int a[101]={}; int n, flag; cin>>n; for(int i=1; i<=n; i++) cin>>a[i]; // 比较n-1趟。 // 6 1 2 3 4 5 -> 1 2 3 4 5 6 for(int i=1; i<=n-1; i++){ flag=1; // 假设序列是依次升序的(已排好序)。 for(int j=1; j<=n-i; j++){ if(a[j]>a[j+1]){ flag=0; // 交换前,序列没排好序。 swap(a[j], a[j+1]); } } if(flag) break; // 既然已排好序,跳出外层循环。 } for(int i=1; i<=n; i++) cout<<a[i]<<" "; return 0; }