标题冒泡排序是一个经典的算法,简单来说用嵌套循环就能实现
现在假设有一个数组[3,5,7,2,4],那么如果要想把它用冒泡从小到大排序,
首先取3和5比较,3小于5;用5和7比较,5小于7;用7和2比较,7大于2;用7和4比较,7大于4;
第0轮比下来数组变为[3,5,2,4,7],比较了 5-1 次;
第1轮还是依次比较数组变为[3,2,4,5,7],比较了 5-2 次;
第2轮数组变为[2,3,4,5,7],比较了 5-3 次,此时发现数组已经从小到大排序,但是由于数组有5个数,所以两两比较,需要比较5-1轮,在每一轮比较的内部循环中,需要比较5-1-排序轮数。
所以结论是:排序总轮数 = 元素个数 - 1;
每轮对比次数 = 元素个数 - 1 - 排序轮数;
c++代码如下:
#include <iostream>
using namespace std;
int main()
{
int a[5] = { 2,4,6,7,3 };
int temp = 0;
for (int i = 0; i < size(a) - 1; i++)
{
for (int j = 0; j < size(a) - 1 - i; j++)
{
if (a[j] > a[j + 1])
{
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
for(int i = 0 ; i < size(a); i++)
{
cout << a[i] << endl;
}
return 0;
}
来源:CSDN
作者:a dog like 史努比
链接:https://blog.csdn.net/weixin_45726569/article/details/104629861