c语言排序之冒泡排序升序的使用详解

在c语言中实现冒泡排序:

简介:“冒泡”这个名字的由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。冒泡排序应该是最常见的排序方法了,c语言初学者一定要学会使用。

冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。

核心思想:两两相邻元素进行比较。冒泡排序的基本思想就是不断比较相邻的两个数,让较大的元素不断地往后移。经过一轮比较,就选出最大的数;经过第2轮比较,就选出次大的数,以此类推。

具体排序如下:

算法总结及实现:
对于具有N个元素的数组R[n],进行最多N-1轮比较;

了解了冒泡排序的基本概念和思想以后,我们又如何将上述思想转换成具体的代码呢?
首先
 我们随机给出一组数据:
int arr[9] = {1,43,8,71,32,90,45,12,41};

我们的任务就是将上述9个数字排列成我们想要的升序

这组数据升序就一定避免不了要进行交换,每次两两比较以后都会进行一次交换

如何实现交换呢?其实很简单先贴代码:

if (arr[j + 1] < arr[j])
			{
				tmp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tmp;
			}

两个数把他想象成一瓶是酱油一瓶是醋,你手上一瓶酱油一瓶醋如何让他们交换瓶子呢?我们只要在拿出一个空瓶子就能很好的解决这个问题,把酱油放入空瓶然后将醋倒入酱油瓶,最后将酱油瓶倒入空瓶就完成了。上述代码便是依靠这样得原理实现的。

其次:

解决完交换的问题以后我们就应该要思考如何让代码跑起来让每次比较都能够进行连续的升序

前面讲过,对于具有N个元素的数组R[n],进行最多N-1轮比较;在第一次for循环中我们给出的9组数据一共要进行八次比较,第二次循环中,我们每进行一次比较后就有一个数据已经完成了,故第一次循环中进行比较的数字在后续中就可以不再进行比较(因为它已经和每个数字都比过了)。

int main() {
	int arr[9] = {1,43,8,71,32,90,45,12,41};
	int i = 0;
	int tmp = 0;
	int j = 0;
	for(i = 0; i < 8; i++)//9组数据每次两两比较一共要进行8次
	{
		for(j= 0;j<8-i;j++)//每次比较完后,下一组的比较都比上一次比较要少一次(8-i)
		{

			if (arr[j + 1] < arr[j])
			{
				tmp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tmp;
			}

		}
		
	}

最后: 

如果你还想打印出来看看实际的升序结果可以加入以下代码:

for (int z = 0; z < 9; z++)
	{
		printf("%d\n",arr[z]);
	}

打印出来的结果如下:

一个简单的冒泡排序就写完了,如果大家还有不懂得话,可以留言一起讨论以下

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值