排序之冒泡排序

冒泡排序

原始思想

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;
}
相关推荐
垆边人似月.2 分钟前
华为题:盛最多水的容器
数据结构·算法
怦然丶心动8 分钟前
用 Java 把干支历法算清楚:从节气切年到可读摘要
java·算法·vue·独立开发·spring boot / spring
HPtiger13 分钟前
数据结构——插入排序
数据结构·排序算法
青春逝如流水13 分钟前
Java 线程与操作系统、硬件的关系:状态、映射与差异
java·开发语言·多线程·ai文章
深入云栈15 分钟前
Netty 4.2.x 源码深度解析 (十八):ChannelOutboundBuffer 写缓冲区 —— 发送队列与流量控制
java·后端·架构
我是人✓18 分钟前
Java核心术语与内存机制深度解析
java
Zachery Pole20 分钟前
具身智能强化学习(1)引言
算法·机器学习
xuxigifxfh21 分钟前
面试记录2026
java·mysql·面试·职场和发展
liangbo721 分钟前
04-List 到底该用哪个?ArrayList、LinkedList、Vector、CopyOnWriteArrayList 选型实战
java
All for pursuit.22 分钟前
【动态规划-11】279.完全平方数
数据结构·c++·算法·leetcode·动态规划