交換--冒泡排序(c++)

思想:不停的比較交換 

冒泡:序列中消除所有的逆序對,有個flag來標記時候進行交換,如果沒被標記--沒有交換沒有逆序對,已經達到有序

時間複雜度O(n2)  內排  穩定

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int N=1001;
int a[N];
int n;
void bubble(int a[],int n){
    int i,j;
    bool flag;//判斷一次遍歷中是否發生了交換
    for(i=0;i<n;i++){
        flag=false;
        for(j=n;j>i;j--){
            if(a[j-1]>a[j]){
            swap(a[j-1],a[j]);
            flag=true;
            }
        }
        if(flag==false)return;
    }
}
int main(){
    cin>>n;
    int x;
    for(int i=1;i<=n;i++){
        cin>>x;
       a[i]=x;
    }
    bubble(a,n);
    for(int i=1;i<=n;i++)
        cout<<a[i]<<" ";
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章