排序之冒泡排序

冒泡排序

原始思想

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;
}
相关推荐
Severus_black36 分钟前
【C++初阶】list使用及相关实现,思路顺滑流畅!
c语言·数据结构·c++·stl·list
噢,我明白了1 小时前
JAVA中的一些基础应用知识点
java·开发语言
武子康1 小时前
H3-World 为何在加载 LoRA 前,先检查导入的代码?
人工智能·深度学习·算法
SL_staff1 小时前
私有化低代码不是妥协,而是企业级数字化的自主可控主航道
java
装不满的克莱因瓶2 小时前
【SpringAI Alibaba】ReactAgent结构化输出OutputType与OutputSchema实战
java·人工智能·ai·springai·springaialibaba
秋天的怀念_David2 小时前
算法一千零一夜 · 第二十八夜 注册
java·程序人生·算法
Java码农也是农2 小时前
Spring 事务详解:@Transactional 如何生效、何时回滚、传播行为怎么选
java·spring boot·spring·事务
二本咕咕-机械转码3 小时前
FreeRTOS深入解析(八)IPC机制之FromISR详解
数据结构·单片机·链表
学长毕设3 小时前
基于SpringBoot的游乐园管理系统-附源码
java·spring boot·后端
SimonKing3 小时前
震惊:怎么回事,opencode一轮对话耗尽免费额度
java·后端·程序员