排序算法——冒泡排序

目录

一、冒泡排序的原理

二、冒泡排序的过程

三、代码实现

总结


一、冒泡排序的原理

冒泡排序是一种简单的排序算法,它通过从左往右依次遍历,比较相邻元素的大小,并根据需要交换它们的位置来排序数据,以升序为例,这个过程类似空中的泡泡,重量大的往下沉,重量小的往上浮,从而得名冒泡排序。

二、冒泡排序的过程

为了更加形象得表达这个过程,我将数组竖起来表示,首先定义一个temp作为中间变量用于交换数据,比如数组是a=10,5,20,30,15,25,

然后判断a0和a1的关系,a0>a1,由于大的要往下"沉",所以交换10和5的位置,所以引入temp来交换值。

接着再往下比较a1和a2的大小,因为 a1<a2,所以不用交换,接着往下,比较a2和a3的大小,仍然不用交换,再比较a3和a4的大小,a3>a4,所以交换a3和a4的值。

最后比较a4和a5的值,a4>a5,继续交换两者的值

这是第一趟排序,成功把最大的30放到了最下面,然后再回到第一个单元格,进行第二趟排序......

由于每趟排序都可以排好一个位置,所以经过n-1趟就能将数组排序好,并且每趟排序之后下一趟可是少进行一次比较,因为最下面的已经被排序过了,无需再次比较。

三、代码实现

复制代码
void Bubble(int n, int* a)
{
	int temp;
	for (int i = 1; i <= n - 1; i++)
	{
		for (int j = 0; j < n - i; j++)
		{
			if (a[j] > a[j + 1])
			{
				temp = a[j];
				a[j] = a[j + 1];
				a[j + 1] = temp;
			}
		}
	}
}

总结

这种排序方法的优点是思路简单,便于理解和编写,而且是直接对数组进行操作,节省内存;缺点是循环次数较多(需要排序n-1次),运行速度较慢。可以学习,拓展思路。本节到这里了,不懂的小伙伴可以私信我。

相关推荐
Code_Solitude2 小时前
C语言动态内存 + 柔性数组 + 数组名退化
c语言·算法·柔性数组
上海潭龙东海科技有限公司2 小时前
客运站管控之动态孪生技术方案(新增一屏管控模块
数据仓库·人工智能·算法·重构·动态规划
YLCHUP4 小时前
【思维&图论建模】题解:债权(debt)_图论_建模_思路转化_思维题目_C++算法竞赛
c++·笔记·算法·数学建模·贪心算法·深度优先·图论
思麟呀5 小时前
背包DP(01背包+完全背包)
c++·算法
笑容掩饰我的失落6 小时前
区块链从小白到精通(七):Solidity 语法精讲——数据类型、函数、修饰器与事件
算法·区块链·php·智能合约·哈希算法
Pniubi7 小时前
力扣24. 两两交换链表中的节点(递归)
算法·leetcode·链表
nice_lcj5207 小时前
LRU 缓存入门:它是什么、怎么用、面试怎么手写
java·数据结构·缓存·面试·lru
꧁细听勿语情꧂7 小时前
直接选择排序,堆排序,冒泡排序,递归快速排序、hoare版本、挖坑法、lomuto前后指针,非递归快速排序
c语言·开发语言·数据结构·算法
俊俊几年的8 小时前
动态规划(Dynamic Programming)详解:从入门到 LeetCode Hot 100
linux·c++·算法·leetcode·嵌入式·动态规划·c
小雉系统17 小时前
BcoreOS安全通信架构:FsSession 抗算法后门安全设计
算法·安全·架构