冒泡排序算法

冒泡排序

思想:每一趟排序,从左往右扫描数组,

如果a[i]>a[i+1],就把她们交换 执行n次,数列就有序了。

正确性证明:第一次排序时,最大值将转到最右边, 第二次排序时,次大值将转到最右边......

以此类推,n次之后n个数都到了指定位置

代码实现:

#include<bits/stdc++.h>
using namespace std;
int a[1005];
int main(){
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n-i;j++){
            if(a[j]>a[j+1]){
                swap(a[j],a[j+1]);
            }
        }
    }
    for(int i=1;i<=n;i++){
        printf("%d ",a[i]);
    }
    return 0;
}

 时间复杂度分析:O(n^2)

原文地址:https://www.cnblogs.com/zck233/p/14256273.html