返回首页 C++ 模板

冒泡排序模板

相邻元素两两比较,大数下沉——最基础的排序算法

冒泡排序 排序 GESP4
#include <bits/stdc++.h>
using namespace std;

int main() {
    int a[] = {5, 3, 8, 1, 2, 7, 4, 6};
    int n = 8;

    // 基本冒泡排序
    for (int i = 0; i < n - 1; i++)
        for (int j = 0; j < n - 1 - i; j++)
            if (a[j] > a[j+1])
                swap(a[j], a[j+1]);

    for (int x : a) cout << x << " ";  // 1 2 3 4 5 6 7 8
    cout << endl;

    // 优化:提前退出
    int b[] = {5, 3, 8, 1, 2, 7, 4, 6};
    for (int i = 0; i < n - 1; i++) {
        bool swapped = false;
        for (int j = 0; j < n - 1 - i; j++) {
            if (b[j] > b[j+1]) {
                swap(b[j], b[j+1]);
                swapped = true;
            }
        }
        if (!swapped) break;  // 没有交换说明已排好
    }

    return 0;
}

📖 要点说明

⚠️ 常见错误