冒泡排序是一种简单的交换排序算法,通过重复交换相邻的元素进行排序,最大的元素会被逐步移动到正确的位置(从小到大排序)
时间复杂度
最好情况:O(n) (数组已经有序时)
平均情况:O(n^2)
最坏情况:O(n^2)
空间复杂度:O(1) 原地排序
//冒泡排序
#include <iostream>
#include <algorithm> // 用于std::swap
void bubbleSort(int arr[],int n)
{
for(int i=0;i<n-1;i++){
for(int j=0;j<n-i-1;j++){
if(arr[j]>arr[j+1]){
std::swap(arr[j],arr[j+1]); // 交换相邻元素
}
}
}
}
void print(int arr[],int n)
{
for(int i=0;i<n;i++)
{
std::cout << arr[i] << " ";
}
std::cout << std::endl;
}
int main()
{
int arr[] = {54,32,1,3,5,2};
int n = sizeof(arr) / sizeof(arr[0]);
std::cout << "Sorting Before:";
print(arr,n);
bubbleSort(arr,n);
std::cout << "Sorting After:";
print(arr,n);
return 0;
}
运行结果
Sorting Before:54 32 1 3 5 2
Sorting After:1 2 3 5 32 54