排序算法:冒泡排序

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

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;//证明此时序列是真的有序
	}
}
相关推荐
SKYDROID云卓小助手10 分钟前
无人设备遥控器之差分信号抗干扰技术
网络·stm32·单片机·嵌入式硬件·算法
美狐美颜SDK开放平台11 分钟前
什么是美颜sdk?美型功能开发与用户体验优化实战
人工智能·算法·ux·直播美颜sdk·第三方美颜sdk·视频美颜sdk
@宁兰44 分钟前
算法实现总结 - C/C++
c语言·c++·算法
xiaoye-duck1 小时前
数据结构之二叉树-链式结构(上)
数据结构
Doro再努力1 小时前
2025_11_14洛谷【入门1】数据结构刷题小结
前端·数据结构·算法
蒙奇D索大1 小时前
【算法】回溯算法精讲:从深度优先搜索到剪枝优化
经验分享·笔记·算法·深度优先·剪枝·改行学it
QTreeY1231 小时前
yolov5/8/9/10/11/12/13+deep-oc-sort算法的目标跟踪实现
人工智能·算法·yolo·目标检测·计算机视觉·目标跟踪
_OP_CHEN1 小时前
算法基础篇:(六)基础算法之双指针 —— 从暴力到高效的优化艺术
c++·算法·acm·优化算法·双指针·oj题·算法蓝桥杯
cs麦子1 小时前
C语言--详解--指针--下
c语言·数据结构·算法
flashlight_hi2 小时前
LeetCode 分类刷题:3217. 从链表中移除在数组中存在的节点
javascript·数据结构·leetcode·链表