用c++实现冒泡排序

本秂侑毒 提交于 2020-03-03 16:27:42

标题冒泡排序是一个经典的算法,简单来说用嵌套循环就能实现

现在假设有一个数组[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;
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!