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

交换排序:

冒泡排序和快速排序

冒泡排序:

示例:

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

注意:

代码实现:

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次

稳定性:稳定

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

总结:

相关推荐
小雨下雨的雨6 小时前
井字棋AI机器人实现详解 - Minimax算法实战-鸿蒙PC Electron框架完成
前端·人工智能·算法·华为·electron·鸿蒙
xieliyu.8 小时前
Java算法精讲:双指针(三)
java·开发语言·算法
一条小锦吕*8 小时前
基于Spring Boot + 数据可视化 + 协同过滤算法的推荐系统设计与实现(源码+论文+部署全讲解)
spring boot·算法·信息可视化
cfm_291410 小时前
Redis五大基本数据结构底层了解
数据结构·数据库·redis
如竟没有火炬10 小时前
最大矩阵——单调栈
数据结构·python·线性代数·算法·leetcode·矩阵
8Qi811 小时前
LeetCode 1143 & 718:最长公共子序列 / 最长重复子数组
算法·leetcode·职场和发展·动态规划
绿算技术11 小时前
万卡推理集群存储选型分析:从核心架构到应用视角
大数据·科技·算法·架构
想吃火锅100512 小时前
【leetcode】1.两数之和js版
javascript·算法·leetcode
net3m3313 小时前
一阶软件低通滤波器算法
人工智能·算法