冒泡排序,思路及源码
#include <iostream>
using namespace std;
/**
* 冒泡排序
* 1、比较相邻的元素,如果第一个比第二个大,交换他们两个
* 2、对每一组相邻元素做同样的工作,执行完毕后,找到第一个最大值
* 3、重复以上步骤,每次比较次数减一,直到不需要比较
*
* 4、 排序总轮数 = 元素个数 - 1
* 5、 每轮对比次数 = 元素个数 - 排序轮数 -1
* 6、 元素个数求法:int sr = sizeof(arr) /sizeof(arr[0])
*/
int main()
{
int arr[9] = {2,35,12,44,55,234,45,87,16} ;
int sr = sizeof(arr) /sizeof(arr[0]);
//打印排序前
cout << "排序前:" << endl;
cout << "sr:" << sr << endl;
for(int i = 0; i < sr; i++)
{
cout << arr[i] << " ";
}
cout << endl;
//开始排序
//总共排序轮数为 元素个数 - 1
for(int i = 0; i < sr -1; i++)
{
//内层循环对比 次数
for(int j = 0; j < sr - 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 < sr; i++)
{
cout << arr[i] << " ";
}
cout << endl;
}