排序算法:冒泡排序

冒泡排序
原理:每次比较相邻的两个元素,然后在满足一定条件情况交换相邻两个元素

5 3 1 4 2

一趟冒泡(当前区间内,最大的一定会排在最后)

第一趟冒泡

i i+1

3 5 1 4 2

3 1 5 4 2

3 1 4 5 2

3 1 4 2 5

第二趟冒泡

3 1 4 2 5

1 3 4 2 5

1 3 2 4 5

第三趟冒泡

1 3 2 4 5

1 2 3 4 5

第四趟冒泡

i i+1

1 2 3 4 5

冒泡排序

时间复杂度(取决于运算的次数):O(n^2)

空间复杂度(取决于额外开辟的空间):O(1)

稳定性:稳定

cpp 复制代码
void bubbleSort(int a[], int n) {
	//外层j控制的每次需要冒泡的长度(每趟过后都会排好一个,长度--)
	for (int j  = n  - 1; j  >= 1; j--) {
		//优化:当某一趟冒泡的时候已经有序,提前跳出循环
		bool flag  = true;//假设当前序列已经有序了
		//内层i遍历当前区间,进行冒泡操作(当前区间的最后一个元素一定会排好)
		for (int i  = 0; i  < j; i++) {
			if (a[i] > a[i  + 1]) {//冒泡操作(如果前者大于后者)
				swap(a[i], a[i  + 1]);//交换两个元素
				flag  = false;//证明此时序列可能还是无序的
			}
		}
		if (flag  == true) break;//证明此时序列是真的有序
	}
}
相关推荐
Old Uncle Tom2 小时前
OpenClaw 记忆系统 -- 记忆预加载
java·数据结构·算法·agent
会编程的土豆2 小时前
洛谷题单入门1 顺序结构
数据结构·算法·golang
生信碱移2 小时前
PACells:这个方法可以鉴定疾病/预后相关的重要细胞亚群,作者提供的代码流程可以学习起来了,甚至兼容转录组与 ATAC 两种数据类型!
人工智能·学习·算法·机器学习·数据挖掘·数据分析·r语言
智者知已应修善业2 小时前
【51单片机中的打飞机设计】2023-8-25
c++·经验分享·笔记·算法·51单片机
智者知已应修善业4 小时前
【51单片机按键调节占空比3位数码管显示】2023-8-24
c++·经验分享·笔记·算法·51单片机
JasmineX-15 小时前
数据结构(笔记)——双向链表
c语言·数据结构·笔记·链表
.5485 小时前
## Sorting(排序算法)
python·算法·排序算法
wuweijianlove5 小时前
算法的平均复杂度建模与性能回归分析的技术7
算法·数据挖掘·回归
子琦啊5 小时前
【算法复习】字符串 | 两个底层直觉,吃透高频题
linux·运维·算法
code_pgf7 小时前
Octo 算法详解-开源通用机器人策略模型技术报告
算法·机器人·开源