排序之冒泡排序

冒泡排序

原始思想

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,
在实际排序中可能会出现前缀有部分是有序的,不用进行排序,

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;
}

相关推荐

  1. 排序冒泡排序

    2024-07-14 09:50:04       42 阅读
  2. 排序冒泡排序

    2024-07-14 09:50:04       23 阅读
  3. 排序算法冒泡排序

    2024-07-14 09:50:04       42 阅读
  4. 排序算法二:冒泡排序

    2024-07-14 09:50:04       70 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-14 09:50:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-14 09:50:04       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-14 09:50:04       58 阅读
  4. Python语言-面向对象

    2024-07-14 09:50:04       69 阅读

热门阅读

  1. flutter弹窗高度过高,在弹出键盘后布局溢出问题

    2024-07-14 09:50:04       23 阅读
  2. Pytorch lr_scheduler 调整学习率

    2024-07-14 09:50:04       22 阅读
  3. C#中反射与MVC和AOP

    2024-07-14 09:50:04       27 阅读
  4. 新词的发现

    2024-07-14 09:50:04       25 阅读
  5. C++类和对象(一)

    2024-07-14 09:50:04       19 阅读
  6. 【AI原理解析】—对抗学习(AL)原理

    2024-07-14 09:50:04       26 阅读