数据结构(8.3_1)——冒泡排序

交换排序:

冒泡排序和快速排序

冒泡排序:

示例:

从行往前将A[i-1]和A[i]比较若遇到A[i-1]>A[i]则将两个元素交换

注意:

代码实现:

cs 复制代码
//交换
void swap(int& a, int& b) {
	int temp = a;
	a = b;
	b = temp;
}
//冒泡排序
void BubbleSort(int A[], int n) {
	for (int i = 0; i < n - 1; i++) {
		bool flag = false;		//表示本趟冒泡是否发生交换的标志
		for (int j = n - 1; j > i; j--)		//一趟冒泡过程
			if (A[j - 1] > A[j]) { //若为逆序
				swap(A[j - 1], A[j]);//交换
				flag = true;
			}
		if (flag == false)
			return;			//本趟遍历后没有发生交换,说明表已经有序
	}
}

算法性能分析

空间复杂度:O(1)

最好情况(有序):

最坏情况(逆序):

平均时间复杂度=O(n^2)

每次交换都需要移动元素3次

稳定性:稳定

冒泡排序适用于顺序存储和链式存储的线性表

总结:

相关推荐
yi.Ist5 小时前
2025CCPC郑州邀请赛
c++·学习·算法·acm
少许极端5 小时前
算法奇妙屋(四十八)-单调栈
java·算法·单调栈
水木流年追梦6 小时前
CodeTop Top 300 热门题目2-最长回文子串
开发语言·人工智能·python·算法·leetcode
图码6 小时前
递归入门:从n到1的优雅打印之旅
数据结构·c++·算法·青少年编程·java-ee·逻辑回归·python3.11
大肥羊学校懒羊羊6 小时前
题解:计算约数个数
数据结构·c++·算法
生信之灵6 小时前
拓扑与曲率双剑合璧:scGeom如何从单细胞数据中“看见”细胞命运
人工智能·深度学习·算法·单细胞·多组学
良木生香6 小时前
【C++初阶】:STL——String从入门到应用完全指南(3)
c语言·开发语言·数据结构·c++·算法
_深海凉_6 小时前
LeetCode热题100-在排序数组中查找元素的第一个和最后一个位置
算法·leetcode·职场和发展
qyzm6 小时前
Educational Codeforces Round 189 (Rated for Div. 2)
数据结构·python·算法
fox_lht6 小时前
8.3.使用if let和let else实现简明的程序流控制
开发语言·后端·算法·rust