前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >排序(五):冒泡排序

排序(五):冒泡排序

作者头像
卡尔曼和玻尔兹曼谁曼
发布2019-01-25 14:47:25
3220
发布2019-01-25 14:47:25
举报

利用交换数据元素的位置进行排序的方法称为交换排序。常用的交换排序方法有冒泡排序法和快速排序法。快速排序法是一种分区交换排序方法。

冒泡排序的基本概念是: 依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。第一趟完成,最大的数被放置在最后。 重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再大于第2个数),将小数放前,大数放后,一直比较到最小数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最小数。 如此下去,直至最终完成排序。

由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。

因为冒泡排序比较简单,所以直接给出示例程序:

//冒泡排序
void bubbleSort(int data[], int n)
{
	int flag = 0;
	//总共比较n-1趟
	for (int i = 1; i < n && flag == 0; i++)
	{
		//flag用于判断本次交换排序过程是否有交换动作,若本次交换排序过程没有交换动作,则说明数据元素已经全部排列好,就可以提前结束排序过程。
		flag = 1;
		for (int j = 0; j < n - i; j++)
		{
			if (data[j + 1] < data[j])
			{
				flag = 0;
				swap(&data[j], &data[j + 1]);
			}
		}
	}
}
//交换两个元素
void swap(int *numx, int *numy)
{
	int temp;
	temp = *numx;
	*numx = *numy;
	*numy = temp;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014年11月30日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档