#include <iostream>
using namespace std;
//经典冒泡排序
void bubble_1(int arr[], int n) {
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n - i - 1; ++j) {
if (arr[j] > arr[j + 1]) {
swap(arr[j], arr[j + 1]);
}
}
}
}
//上浮,下沉结合冒泡 双向冒泡
void bubble_2(int arr[], int n) {
int low = 0, height = n - 1, i, j;
while (low < height) {
for (i = low; i < height; ++i) {
if (arr[i] > arr[i + 1]) {
swap(arr[i], arr[i + 1]);
}
}
--height;
for (j = height; j > low; --j) {
if (arr[j] < arr[j - 1]) {
swap(arr[j], arr[j - 1]);
}
}
++low;
}
}
//数组打印
void show(int arr[], int n) {
for (int i = 0; i < n; ++i) {
cout << arr[i] << " ";
}
cout << endl;
}
int main() {
int arr[] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
// bubble_1(arr, 10);
bubble_2(arr, 10);
show(arr, 10);
return 0;
}
各种冒泡(C++)
最新推荐文章于 2024-07-13 21:02:20 发布