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

稳定性:稳定

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

总结:

相关推荐
仪器科学与传感技术博士32 分钟前
python:前馈人工神经网络算法之实战篇,以示例带学,弄明白神经网络算法应用的思路、方法与注意事项等
人工智能·python·深度学习·神经网络·算法·机器学习
东东最爱敲键盘1 小时前
数据结构: 双向链表
数据结构
云边有个稻草人2 小时前
【C++】第二十一节—一文详解 | 红黑树实现(规则+效率+结构+插入+查找+验证)
算法·红黑树·红黑树的插入·红黑树的结构·红黑树完整代码·红黑树的效率·红黑树的查找
仟濹3 小时前
【C/C++】整数超过多少位时用「高精度」
c语言·c++·算法
DIY机器人工房6 小时前
一个可以检测本机的字节顺序,并对任意数据进行字节顺序的反转操作的代码。
嵌入式硬件·算法·嵌入式·diy机器人工房
杰克尼8 小时前
11. 盛最多水的容器
算法·leetcode·职场和发展
程序员Xu10 小时前
【OD机试题解法笔记】查找接口成功率最优时间段
笔记·算法
云泽80810 小时前
数据结构前篇 - 深入解析数据结构之复杂度
c语言·开发语言·数据结构
逝雪Yuki10 小时前
数据结构与算法——字典(前缀)树的实现
数据结构·c++·字典树·前缀树·左程云
技术思考者10 小时前
Leetcode - 反转字符串
数据结构·算法·leetcode