冒泡排序详解
void bubbleSort(std::vector& arr) {
int n = arr.size();
for (int i = 0; i < n-1 ; i++) { // 需要 n-1 轮 原理是 3个元素 两轮比交即可 10个元素9轮比较即可
bool swapped = false; // 用于优化,检测是否发生交换
for (int j = 0; j < n - i -1 ; j++) { // 第十一行和第十二行 一个是 减一 一个是加一 ,因为 需要前一个元素和后一个元素比较 所以一个是 加一一个事减一
if (arr[j] > arr[j + 1]) {
std::swap(arr[j], arr[j + 1]);
swapped = true;
}
}
if (!swapped) break; // 如果没有交换,说明已排序
}
}
int main() {
std::vector arr = { 64, 34, 25, 12, 22, 11, 90 };
bubbleSort(arr);
for (int num : arr) {
std::cout << num << " ";
}
return 0;
}