排序之冒泡排序

冒泡排序

原始思想

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;
}
相关推荐
霸道流氓气质9 分钟前
Saga模式入门与实战:编排与协同模式、补偿设计原则与Java生产级实现
java·开发语言
荆棘鸟智能10 分钟前
虫情测报灯图像识别算法实践:小目标检测、粘连计数与飞虱细粒度分类
算法·目标检测·分类
江湖有缘14 分钟前
Docker实战 | 使用Docker部署Readeck书签管理工具
java·docker·eureka
小毛驴85018 分钟前
mvn help:effective-settings 与 mvn help:effective-pom
java·linux·前端
silvamux_31 分钟前
MiniMax API 调用教程:兼容 OpenAI 写法
java·数据库·elasticsearch
爱读书的小胖31 分钟前
LeetCode 27. 移除元素(C)解题分析
数据结构·算法
科技小E33 分钟前
敏感数据不敢上云训练?本地大模型推理服务器DLTM私有化部署,让训练全程留在企业内网
大数据·算法·自动化
染指111035 分钟前
145.Agent-LangGraph基础概念和安装和简单代码示例
java·服务器·数据库·langchain·agents
Doker 多克38 分钟前
ForkJoinPool 详解
java·多线程
Wang's Blog1 小时前
Java 项目实战: 交友项目 - Dubbo 启动检查
java·dubbo·交友