蛮力法之冒泡排序

思路:

  1. 从数组的第一个元素开始,依次比较相邻的两个元素,如果它们的顺序不符合要求(比如要求升序排列,而前一个元素大于后一个元素),则交换它们的位置。

  2. 经过一轮比较和交换后,数组中最大(或者最小,取决于排序顺序)的元素将被“冒泡”到数组的末尾位置。

  3. 接着对剩下的未排序部分重复以上操作,直到整个数组排序完成。

代码:

#include
using namespace std;

void bubbleSort(int arr[], int n) {
    for (int i = 0; i < n; i++) { // 外层循环控制冒泡的轮数,每一轮将最大的元素“冒泡”到末尾
        for (int j = i + 1; j < n; j++) { // 内层循环用于比较相邻的元素并交换位置
            if (arr[i] > arr[j]) { // 如果前一个元素大于后一个元素,则交换它们的位置
                swap(arr[i], arr[j]);
            }
        }
    }
}

int main() {
    int arr[] = { 1, 5, 2, 9, 7, 6, 4, 8 };
    int n = sizeof(arr) / sizeof(arr[0]);

    bubbleSort(arr, n); // 调用冒泡排序函数对数组进行排序

    for (int i = 0; i < n; i++) {
        cout << arr[i] << " "; // 输出排序后的数组元素
    }

    return 0;
}

你可能感兴趣的:(数据结构与算法,算法,排序算法,数据结构)