冒泡排序

冒泡排序


冒泡排序是排序算法中比较基础的一种排序,主要思想是:每次比较相邻两个数的大小,例如a[0]和a[1]比较,若a[0]>a[1],则交换,依次向后比较,一轮下来,最大的交换到最后面,之后每轮比较出大的放到后面。


代码实现如下:
#include<stdio.h>
#include<stdlib.h>
//冒泡排序
void BubbleSort(int a[],int nlength)
{
	int i,j,mark=0;
	if(a == NULL||nlength <= 0) return ;
	for(i=0;i<nlength;i++)
	{
		mark = 0; 
		for(j=0;j<nlength-i-1;j++)  //优化1
		{
			if(a[j]>a[j+1]) //相邻元素进行比较
			{
				//不用中间变量实现两个类型相同的变量的交换
				a[j]^=a[j+1];
				a[j+1]^=a[j];
				a[j]^=a[j+1];
				 mark=j+1;  //标记最大交换位置
			}
		}
		if(mark==0) break;
		i=nlength-1-mark;   //减少整体执行次数---优化2
	}
}
int main()
{
	int i;
	int a[]={1,3,2,5,8,6,7,9};
	int n=sizeof(a)/sizeof(a[0]);
	BubbleSort(a,n);
	for(i=0;i<n;i++)
	 printf("%d ",a[i]);
	system("pause");
	return 0;
}



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值