排序之冒泡排序

冒泡排序

原始思想

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;
}
相关推荐
晓天衡宇•评测社区25 分钟前
FSR-Bench 前沿科学推理榜单发布:GPT-5.5 居首,“会推理”未必“能答对”
算法
matlabgoodboy37 分钟前
计算机毕设代做|Java Python Matlab APP 全套开发设计
java·python·课程设计
程序喵大人1 小时前
【C++进阶】STL算法与函数对象 - 02 sort为什么需要随机访问迭代器
开发语言·c++·算法
hanlin032 小时前
动态规划专练:力扣第121、122题
笔记·算法·leetcode
To_OC2 小时前
LC 74 搜索二维矩阵:换皮的二分查找,我居然一开始没看出来
javascript·算法·leetcode
文心快码BaiduComate2 小时前
文心快码荣获“中国优秀软件产品”,实力再获国家级认可
算法·代码规范
玖玥拾2 小时前
LeetCode 189 轮转数组
算法·leetcode
程序员雷欧2 小时前
环形缓冲区深度解析:从基础原理到Disruptor源码的全面剖析
java
xiaoqiMikko2 小时前
Dependabot 面板全绿,不代表你的 Tomcat 没洞
java·spring boot
ZhangShao06072 小时前
题解:CF2249B
c++·算法