排序算法——冒泡排序

目录

一、冒泡排序的原理

二、冒泡排序的过程

三、代码实现

总结


一、冒泡排序的原理

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

二、冒泡排序的过程

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

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

接着再往下比较a[1]和a[2]的大小,因为 a[1]<a[2],所以不用交换,接着往下,比较a[2]和a[3]的大小,仍然不用交换,再比较a[3]和a[4]的大小,a[3]>a[4],所以交换a[3]和a[4]的值。

最后比较a[4]和a[5]的值,a[4]>a[5],继续交换两者的值

这是第一趟排序,成功把最大的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次),运行速度较慢。可以学习,拓展思路。本节到这里了,不懂的小伙伴可以私信我。

相关推荐
_extraordinary_22 分钟前
选择排序+快速排序递归版(二)
算法
sp_fyf_202424 分钟前
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-11-04
人工智能·神经网络·算法·机器学习·语言模型·数据挖掘
Wils0nEdwards34 分钟前
Leetcode 回文数
算法·leetcode·职场和发展
可可可可可人35 分钟前
leetCode——二进制手表
算法·leetcode
兔兔爱学习兔兔爱学习36 分钟前
leetcode219. Contains Duplicate II
javascript·数据结构·算法
Lemon_man_42 分钟前
算法——两两交换链表中的节点(leetcode24)
数据结构·算法·链表
vampire-wpre1 小时前
我要成为算法高手-前缀和篇
算法
莫叫石榴姐1 小时前
数据科学与SQL:如何计算排列熵?| 基于SQL实现
大数据·人工智能·sql·深度学习·算法·机器学习
hccee1 小时前
C# 异常处理、多个异常、自定义异常处理
开发语言·算法·c#
hikktn2 小时前
拓扑学与DNA双螺旋结构的奇妙连接:从算法到分子模拟
算法·拓扑学