冒泡法排序

冒泡法排序在刚学编程语言的时候都经常接触,当刚接触时总是很疑惑,明明感觉自己掌握了,过了一阵子感觉又不会了,其实冒泡的原理很简单,自己动手排序一次,就能体验到冒泡如何的冒泡,但数组的个数不要太多。冒泡法对一个数组进行排序,里面的数据可以有相同也有不相同,同时实现冒泡的时候用到双重循环,第一个for循环是用来控制排序要跑的趟数,比如说你的数组只有一个数据,那还用排序吗??如果N个数据那就要减去那个数据本身了,所以N个数据就要跑N-1趟,每一趟又要进行比较,第二个for是控制每一趟比较的次数,比如第一趟要比较的次数为N-1,第二趟N-2,只要理解两个for的作用容易掌握了。

#include <stdio.h>
#define N 10
void BubbleArr(int *a, int len)  //冒泡法排序
{
	int i, j, temp;
	for(i=0; i<len-1; i++)   //比较的趟数,1个数时就不用比较,N个数就要比较N-1趟
	{
		for(j=0; j<len-1-i; j++)  //每一趟中要比较的次数
		{
			if(a[j]>a[j+1])   //当前面的那个数比后面的那个数大时交换,跑完一趟时,要比较个数就减少1个
			{                 //跑完一趟最后一个数就不用比较了,比较的个数也就比以前少一个了
				temp = a[j];
				a[j] = a[j+1];
				a[j+1] = temp;
			}
		}
	}
}

void  PrintArr(int *a, int len) //打印数组
{
	for(int i=0; i<len; i++)
	{
		printf("%d ",a[i]);
	}
	printf("\n");
}

void main()
{
	int a[N] = {1, 2, 5, 3, 7, 8, 0, 4, 6, 9};  //初始化一个数组
	printf("为进行排序前的数组:\n");
	PrintArr(a, N);
	printf("进行排序后的数组:\n");
	BubbleArr(a, N);
	PrintArr(a, N);
}
if(a[j]>a[j+1])关系运算符可以>=或<等,看你的数据是否有相同或者升序降序。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值