【基础算法】排序之冒泡排序

题目传送门

思路:

冒泡排序( Bubble Sort )是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

根据以上的思路,可以敲出非常简洁的代码(含超详细代码注释)

CODE

#include <bits/stdc++.h>
using namespace std;
/* 冒泡排序(标志优化)*/
void bubbleSortWithFlag(vector<int> &nums) {
	// 外循环:未排序区间为 [0, i]
	// 初始时,整个数组都需要排序,所以i从数组长度减一开始
	for (......) {
		bool flag = false; // 初始化标志位,用于记录这一轮是否进行了交换
		// 内循环:将未排序区间 [0, i] 中的最大元素交换至该区间的最右端
		// j从0开始,因为我们要比较的是相邻的两个数字
		for (......) {
			// 如果当前数字比它后面的数字大,就交换它们的位置
			if (......) {
				swap(......);
				flag = true; // 记录了这一轮有交换发生
			}
		}
		// 如果这一轮没有发生任何交换,说明数组已经排好序了,可以提前结束
		if (!flag)
			break;
	}
}
int main() {
	int n;
	cin >> n;
	vector<int>v(n);
	for (......) {
		cin >> v[i];
	}
	bubbleSortWithFlag(v);
	for (......) {
		cout <<......<< " ";
	}
	return 0;
}

希望给你带来帮助,如果你 AC 了,请留下一个赞吧;如果没有 AC ,欢迎提问!!!

原来在这,不过我为啥越看,越想是用AI写的

1 个赞

什么意思?没听懂

绝对纯手工打造

应该不是,AI的码风比这个还要特别一点

1 个赞

断句问题,为啥/越看越像 AI 写的

1 个赞

长变量是我故意写的,就是表示代码的排序

看出来了

1 个赞