数据结构(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次

稳定性:稳定

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

总结:

相关推荐
Sarvartha24 分钟前
C++ STL 栈的便捷使用
c++·算法
夏鹏今天学习了吗1 小时前
【LeetCode热题100(92/100)】多数元素
算法·leetcode·职场和发展
飞Link1 小时前
深度解析 MSER 最大稳定极值区域算法
人工智能·opencv·算法·计算机视觉
bubiyoushang8881 小时前
基于CLEAN算法的杂波抑制Matlab仿真实现
数据结构·算法·matlab
曾经的三心草2 小时前
redis-2-数据结构内部编码-单线程-String命令
数据结构·数据库·redis
2401_894828122 小时前
从原理到实战:随机森林算法全解析(附 Python 完整代码)
开发语言·python·算法·随机森林
Remember_9932 小时前
【LeetCode精选算法】前缀和专题二
算法·哈希算法·散列表
源代码•宸3 小时前
Leetcode—509. 斐波那契数【简单】
经验分享·算法·leetcode·面试·golang·记忆化搜索·动规
博大世界3 小时前
matlab结构体数组定义
数据结构·算法
Loo国昌4 小时前
【LangChain1.0】第九阶段:文档处理工程 (LlamaIndex)
人工智能·后端·python·算法·langchain