【C/C++】冒泡排序的学习与使用

一.什么是冒泡数列?

1.冒泡数列就是元素按ASCII码值从小到大排序的数列,由于很像水中泡泡向上冒出的形态,所以叫冒泡数列,如图:

        


二.如何将一个数列转换成冒泡数列?

        答:使用冒泡排序即可将一个乱序的数组转换成冒泡数列。

        冒泡排序即按ASCII码值把元素从小到大排序,要实现冒泡排序,我们可以写一个这样的函数:

void pao(int sz,int arr[])
{
	int i = 0;
	for (int i = 0; i < sz - 1; i++)
	{
		int j = 0;
		int key = 1;
		for (j = 0; j < sz - i - 1; j++)
		{
			if (arr[j] > arr[j + 1])
			{
				int tmp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tmp;
				key = 0;
			}
		}
		if (key == 1)
		{
			break;
		}
	}
}

        这个函数是针对一维数组的,从函数的变量类型(int arr[])可以看出。其中的sz是数组的长度,arr[]是你想冒泡排序的数组。


三.原理

        原理其实很简单,就是将数组相邻的两个元素进行比较,如果前一个元素比较大,就把他和后一个元素交换位置。

if (arr[j] > arr[j + 1])
{
	int tmp = arr[j];
	arr[j] = arr[j + 1];
	arr[j + 1] = tmp;
	key = 0;
}

        这一部分其实就是在进行这一操作。

        而外层的循环则是用来重复这一操作的。


四.扩展

        除了整形类型,还有其他类型能用冒泡排序吗?

        其实都行,甚至结构体也能进行冒泡排序,ASCII码表上的所有元素都可以按ASCII码值来排序,但是字符串要用strcmp函数进行比较,结构体则要分数字和字符串来比较。


评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值