排序之冒泡排序

冒泡排序

原始思想

cpp 复制代码
bool bubble(int* arr, int lo, int hi)
{
	bool sorted = true;
	while (++lo < hi) {
		if (arr[lo - 1] > arr[lo]) {
			mySwap2(arr[lo - 1], arr[lo]);
			sorted = false;
		}
	}
	return sorted;
}
void bubbleSort(int* arr, int lo, int hi)
{
	while (!bubble(arr, lo, hi--));
}

lo,hi),通过一个标志记录逆序的元素 ,该标志控制外层循环 ### 改进 可以把原始数组看成无序的前缀和有序的后缀,一开始有序的后缀可能没有,为0, 在实际排序中可能会出现前缀有部分是有序的,不用进行排序, ```cpp int bubblePlus(int* arr, int lo, int hi) { int last = lo; while (++lo < hi) { if (arr[lo - 1] > arr[lo]) { last = lo; mySwap2(arr[lo - 1], arr[lo]); } } return last; } ```

相关推荐
MOON404☾3 分钟前
Chapter 002. 线性回归
算法·回归·线性回归
geNE GENT20 分钟前
Spring Boot管理用户数据
java·spring boot·后端
故事和你9121 分钟前
洛谷-数据结构-1-3-集合3
数据结构·c++·算法·leetcode·贪心算法·动态规划·图论
怒放吧德德23 分钟前
Spring Boot实战:Event事件机制解析与实战
java·spring boot·后端
春栀怡铃声28 分钟前
【C++修仙录02】筑基篇:类和对象(上)
开发语言·c++·算法
自我意识的多元宇宙42 分钟前
二叉树的遍历和线索二叉树--线索二叉树
数据结构
ulias21243 分钟前
leetcode热题 - 3
c++·算法·leetcode·职场和发展
wsx_iot43 分钟前
arthas使用
java·arthas
实心儿儿1 小时前
Linux —— 进程概念 - 程序地址空间
linux·运维·算法
菜鸟丁小真1 小时前
LeetCode hot100-287.寻找重复数和994.腐烂的橘子
数据结构·算法·leetcode·知识点总结