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 ,这样传参数比较严谨