4、排序算法(C++)

1. 冒泡排序(BubbleSort)

冒泡排序的思想是不断比较相邻两个元素,如果前面的元素比后面大,就交换它们的位置。每完成一轮遍历,当前最大的元素都会被交换到数组末尾,就像气泡不断往上浮一样,所以叫冒泡排序。

cpp 复制代码
#include <iostream>
using namespace std;

void BubbleSort(int arr[], int n)
{
    for (int i = 0; i < n - 1; i++) // 外层控制排序轮数
    {
        for (int j = 0; j < n - 1 - i; j++) // 内层比较相邻元素
        {
            if (arr[j] > arr[j + 1])
            {
                swap(arr[j], arr[j + 1]);
            }
        }
    }
}

int main()
{
    int arr[] = {5, 3, 8, 6, 2};
    int n = sizeof(arr) / sizeof(arr[0]); // 20除以4 = 5 按字节计算

    BubbleSort(arr, n);

    for (int i = 0; i < n; i++)
        cout << arr[i] << " ";

    return 0;
}

冒泡排序的核心思想是比较相邻元素,如果顺序不对就交换,每一轮都会把一个最大的元素放到数组末尾,因此总共需要 n-1 轮。它的平均和最坏时间复杂度都是 O(n²),空间复杂度是 O(1),属于稳定排序。实际开发中由于效率较低,很少直接使用,C++ 的**std::sort**一般采用的是 IntroSort,比冒泡排序效率高得多。

int n = sizeof(arr) / sizeof(arr0);

核心是计算字节数,int是4个字节,5个数就是20个字节

n = 20/4 = 5 ,这样传参数比较严谨