C语言基础算法冒泡排序法的简单实现

ps:第一次写博客有错误欢迎指出。

前言:冒泡排序,是一种计算机科学领域的较简单基础的排序算法。其基本思路是,对于一组要排序的元素列,依次比较相邻的两个数,将比较小的数放在前面,比较大的数放在后面,如此继续,直到比较到最后的两个数,将小数放在前面,大数放在后面,重复步骤,直至全部排序完成。

实现图解

在这里插入图片描述

实现思路

冒泡排序法的核心思想就是比较大小然后交换两个元素的位置,如上图所示:
10>>8 比较,10大与8交换位置。(第一个元素和第二个元素比较
10>>5比较,10大与5在交换位置。(第二个元素和第三个元素比较
10>>2比较,10大在与2在交换位置。(第三个元素和第四个元素比较
…以此类推
最后,所有数都和10比较完以后10来到了最后的位置。
如下图所示:
第一轮排序
在这里插入图片描述
第二轮首先是数组的第一个元素和第二个元素比较及:
8>>5比较,8大与5交换位置。(第一个元素和第二个元素比较
8>>2比较,8大与2交换位置。(第二个元素和第三个元素比较
8>>3比较,8大与3交换位置。(第三个元素和第四个元素比较
8>>9比较,9大,8位置不动。第四个元素和第五个元素比较
9>>6比较,9大与6交换位置。(第五个元素和第六个元素比较
…以此类推
最后如下图所示:
第二轮排序
在这里插入图片描述
总结:每轮比较及找出当前轮次的最大值,如果前面的元素比后面的元素大就交换,
反之则不动。

实现代码

#include<stdio.h>
int main()
{
	int arr[10] = { 10,8,5,2,3,9,6,7,4,1 };
	//元素个数
	int sz = sizeof(arr) / sizeof(arr[0]);
	int i = 0;
	int j = 0;
	
	for (i = 0; i < sz-1; i++)//需要排的总轮数。一个数比较排序完为一轮
	{
		for (j = 0; j < sz-1-i; j++)//每一轮确定一个最大值,每次比较都少一轮。
		{
			//第一个元素比第二个元素大就交换。
			if (arr[j] > arr[j + 1])
			{
				int tmp = arr[j ];
				arr[j ] = arr[j+1];
				arr[j+1] = tmp;
			}
		}
	}
	//打印每一个元素
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}
	
}

ps:10个元素排序,如果前面的九个元素已经依次排序完成以后,最后一个元素一定在它那个确定的位置上,也是为什么只需要比较sz-1次;

运行结果
在这里插入图片描述

  • 20
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔跑的比特位

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值