C++ 冒泡排序
5.2.3 冒泡排序
作用: 最常用的排序算法,对数组内元素进行排序
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
- 对每一对相邻元素做同样的工作,执行完毕后,找到第一个最大值。
- 重复以上的步骤,每次比较次数-1,直到不需要比较

示例: 将数组 { 4,2,8,0,5,7,1,3,9 } 进行升序排序
#include <iostream>
using namespace std;
int main() {
// 利用冒泡排序实现升序序列
int arr[] = { 4,2,8,0,5,7,1,3,9 };
cout << "冒泡排序前:" << endl;
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
cout << arr[i] << " ";
}
cout << endl;
// 获取数组的长度
int size = sizeof(arr) / sizeof(arr[0]); // 9
// 开始冒泡排序
// 总共排序轮数为 元素个数 - 1
for (int i = 0; i < size - 1; i++)
{
// 内层循环对比 次数 = 元素个数 - 当前轮数 - 1
for (int j = 0; j < size - i - 1; j++)
{
// 如果第一个数字,比第二个数字大,交换两个数字
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
cout << "冒泡排序后:" << endl;
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
{
cout << arr[i] << " ";
}
cout << endl;
//// 定义数组
//int arr[] = { 4,2,8,0,5,7,1,3,9 };
//// 获取数组的长度
//int size = sizeof(arr) / sizeof(arr[0]);
//cout << "冒泡排序前:" << endl;
//for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
//{
// cout << arr[i] << endl;
//}
//// 外层循环
//for (int i = 0; i < size - 1; i++)
//{
// // 内层循环
// for (int j = 0; j < size - i - 1; j++)
// {
// int temp;
// if (arr[j] > arr[j + 1])
// {
// temp = arr[j];
// arr[j] = arr[j + 1];
// arr[j] = temp;
// }
// }
//}
//cout << "冒泡排序后:" << endl;
//for (int i = 0; i < size; i++)
//{
// cout << arr[i] << endl;
//}
system("pause");
return 0;
}

浙公网安备 33010602011771号