冒泡排序记录

#include <iostream>
#include <vector>

using namespace std;

void bubbleSort(vector<int>& srcVector)
{
	//外层循环控制比较次数,内层循环控制每趟比较的次数;

	//理解法确定循环条件
	//如果有n个数据,那么其实按照冒泡排序的思路,挨个比较,每轮把最大值放最后,
	//只要后面n - 1 个数据是比较出来的有序数,其实最开始这个元素就自带顺序了
	//所以比较趟数是n - 1 趟,即srcVector.size() - 1趟,循环条件就是
	//for (int i = 0; i < srcVector.size() - 1; i++)
	//内层循环是说每趟比较多少次,其实就是等待比较的元素(待排序数据开始)到无序数据的末尾有几次相邻数据的比较,
	//即有几个数据相互紧挨着进行比较,假如i = 0, 然后有五个数据,第一趟的比较次数就是5 - 0 - 1 = 四次,即比次数循环条件
	//是for (int j = 0; j < srcVector.size() - 1 - i; j++); srcVector.size() - 1 表示几个数之间有几个间隔,- i表示排除已经有序
	//的数的个数

	//规律方法确定循环条件
	//假如有5个数据 5 1 3 4 2
	
	//冒泡过程:
	// 第(i)一趟结果: 1 3 4 2 5 #5 依次和 1 3 4 2相邻数据比较并进行大数放前的交换,最后形成 1 3 4 2 5, 比较了4 次
	// 第(i)二趟结果: 1 3 2 4 5 #1 依次和 3 2 4相邻数据比较并进行大数放前的交换,最后形成 1 3 4 2 5, 比较了3次
	// 第(i)三趟结果: 1 2 3 4 5 #1 依次和 2 3 相邻数据比较并进行大数放前的交换,最后形成 1 3 4 2 5, 比较了2次
	// 第(i)四趟结果: 1 2 3 4 5 #1 依次和 2 相邻数据比较并进行大数放前的交换,最后形成1 2 3 4 5, 比较了1次 
	//规律:趟数等于n(5) - 1 趟;每趟比较 n(5) - i(趟次) - 1 次
	for (int i = 0; i < (int)srcVector.size() - 1; i++)
	{
		for (int j = 0; j < (int)srcVector.size() - 1 - i; j++)
		{
			if (srcVector[j] > srcVector[j + 1])
			{
				int temp = srcVector[j];
				srcVector[j] = srcVector[j + 1];
				srcVector[j + 1] = temp;
			}
		}
	}
}

int main()
{
	vector<int> a = { 1,3,9,3,5,6,2,3,3,8,7 };
	bubbleSort(a);

	for (int i = 0; i < (int)a.size(); i++)
	{
		cout << a[i] << "  ";
	}

	cout << endl;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值