冒泡排序是一种稳定排序算法,因为排序过程每次都把其中最大的数或者最小的数上移直至顶端,因此叫冒泡排序。
排序过程:依次交换相邻的两个数;第一次选出最大的数,第二次选出第二大的数,依次进行,直至n-1个数位置,最后一个数不用排。
复杂度:O(n²)
代码实现:
#include <iostream>
using namespace std;
void bubbleSort(int arr[], int length)
{
//遍历次数;
for (int i = 0; i < length - 1; i++)
{
//每次遍历需要再次遍历整个数组减次数,因为每一次都能排出一个最大值,最后一个就不用参与比较;
for (int j = 0; j < length - i - 1; j++)
{
//逆序交换
if (arr[j] > arr[j + 1])
{
int temp;
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
//打印数组
void printArr(int arr[], int length)
{
for (int i = 0; i < length; i++)
{
cout << arr[i] << ", ";
}
cout << endl;
}
int main()
{
int arr[] = { 2,1,5,4,76,45,88,41,3 };
cout << "sort first" << endl;
printArr(arr, sizeof(arr) / sizeof(arr[0]));
bubbleSort(arr, sizeof(arr)/sizeof(arr[0]));
cout << "sort after" << endl;
printArr(arr, sizeof(arr) / sizeof(arr[0]));
return 0;
}