C++学习笔记----冒泡算法

冒泡算法

冒泡算法定义

冒泡排序:
作用:最常用的排序算法,对数组内元素进行排序
1、比较相邻的元素。如果第一个比第二个大,就将他们进行交换
2、对每一对相邻元素做相同的工作,执行完毕后,找到第一个最大值。
3、重复以上步骤,每次比较次数-1,直到不需要比较。

冒泡算法思路

比如说有这么一个一维数组{3,5,1,8,7,9, 6},一共有7个元素,因此数组内各元素的序号依次为0——6
第一次遍历时:
依次遍历比较相邻的两个数,每当后面那个元素小于前面那个元素时,交换两个元素的位置。
1、比较第0个元素和第1个元素,因为3<5,所以它们的次序不变。
2、比较第1个元素和第2个元素,因为5>1,所以交换它们的位置。此时更新数组为:

3,1,5,8,7,9,6

3、比较第2个元素和第3个元素,因为5<8,所以它们的次序不变。
4、比较第3个元素和第4个元素,因为8>7,所以交换它们的位置。此时更新数组为:

3,1,5,7,8,9,6

5、比较第4个元素和第5个元素,因为8<9,所以它们的次序不变。
6、比较第5个元素和第6个元素,因为9>6,所以交换它们的位置。此时更新数组为:

3,1,5,7,8,6,9

到此为止,就完成了第一次遍历。
由此类推,
第二次遍历的结果为:

1,3,5,7,6,8,9

第三次遍历的结果为:

1,3,5,6,7,8,9

到这里已经完成了整个冒泡排序。接下来是实现对一维数组冒泡排序的相关代码

代码实例

#include<iostream>
using namespace std;
int main()
{
	/*
	冒泡排序:
	作用:最常用的排序算法,对数组内元素进行排序
	1、比较相邻的元素。如果第一个比第二个大,就将他们进行交换
	2、对每一对相邻元素做相同的工作,执行完毕后,找到第一个最大值。
	3、重复以上步骤,每次比较次数-1,直到不需要比较。
	*/
	//首先先输入一个一维数组
	int arr[10] = { 1,9,4,2,8,3,7,6,0,5 };
	int temp = 0;
	cout << "排序前的数组为:arr[10]={";
	for (int i = 0; i < 10; i++)
	{
		cout << arr[i] << ",";
	}
	cout << "};" << endl;
		for (int i = 0; i < 9; i++)//外层循环
		{
			for (int j = 0; j < 9 - i; j++)//内层循环,每经历一次内层循环,参与循环的元素个数-1
			{
				//如果排前面的数比后面那个大,就交换位置
				while (arr[j] > arr[j + 1])
				{
				temp = arr[j+1];//当满足后面那个数小于前面那个数时,先用temp存储后面那个数
				arr[j + 1] = arr[j];
				arr[j] = temp;
				}
			}
		}
		cout << "经过冒泡算法排序后的数组为:arr[10]={";
		for (int i = 0; i < 10; i++)
		{
			cout << arr[i] << ",";
		}
		cout << "};" << endl;
	system("pause");
	return 0;
}

运行结果为:

排序前的数组为:arr[10]={1,9,4,2,8,3,7,6,0,5,};
经过冒泡算法排序后的数组为:arr[10]={0,1,2,3,4,5,6,7,8,9,};
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值