冒泡排序

本文介绍了一种冒泡排序算法的实现方式,并通过C语言代码示例展示了如何按升序排列一组整数。该算法利用了优化技巧来减少不必要的比较和交换操作。

 

 

#include "stdio.h"

//@TODO 冒泡排序 由小到大递增排序
//@authod yeshaoting
int n = 10;
int data[] = {2,1,5,7,4,3,0,6,9,8};

void display()
{
	for(int i=0; i<n; i++)
	{
		printf("%d\t", data[i]);
	}
}

void bubble_sort()
{
	for(int i=0; i<n-1; i++)
	{
		bool flag = false;	//是否发生交换
		int index = i;		//用来保存最后发生交换的位置,取代下一次迭代 i 值
		for(int j=n-1; j>i; j--)
		{
			if(data[j]<data[j-1])
			{
				int temp = data[j];
				data[j] = data[j-1];
				data[j-1] = temp;
				flag = true;
				index = j-1;
			}
		}
		i = index;

		if(!flag)	//整趟扫描都未发生交换,说明已经排好序
			break;
	}

	display();
}

void main(int argc, char *argv[])
{
	bubble_sort();
	return;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值