图片取自: kuaizi_sophia
算法步骤描述
1、从数组第一个位置比较相邻的两个元素大小,如果第一个比第二个大,就交换他们两个。
2、对每一对相邻元素作同样的工作,从开始的第一对到结尾的最后一对。经过一趟完整的排序最后的元素应该会是最大的数。
3、针对数组重复执行这个步骤,除过最后一个,每经过一趟比较,要比较的元素就会少一个。
4、直到剩下最后一个元素,此时也无需进行比较。
算法执行过程
图片取自: wsqyouth
代码
#include<iostream>
using namespace std;
template<typename T>
void printArrary(T Arrary[], int len) //自定义一个数组打印函数
{
for (int i = 0; i < len; i++)
{
cout << Arrary[i] <<" ";
}
cout << endl;
}
template<typename T>
void mySwap(T &a, T &b) //自定义一个模板交换函数
{
T temp = a;
a = b;
b = temp;
}
template<typename T>
void bubbleSort(T arr[], int len)
{
for (int i = len - 1; i > 0; i--) //设置外层循环的条件
{
for (int j = 0; j < i; j++)
{
if (arr[j] > arr[j + 1])
mySwap(arr[j], arr[j + 1]);
}
}
printArrary(arr, len);
}
int main()
{
int arr[] = {3, 6, 4, 11, 2, 11, 10, 5};
int len = sizeof(arr) / sizeof(arr[0]);
bubbleSort<int>(arr, len);
return 0;
}