#include <iostream>
using namespace std;
template<class T>
void bubbleSort(T arr[], int n) {
int left = 0, right = n - 1;
while (left < right) {
int flag = 0;
// 从左到右选最大的值
for (int j = left; j < right; ++j) {
if (arr[j] > arr[j + 1]) {
swap(arr[j], arr[j + 1]);
flag = 1;
}
}
// 从右到左选最小的值
--right;
for (int m = right; m > left; --m) {
if (arr[m] < arr[m - 1]) {
swap(arr[m], arr[m - 1]);
flag = 1;
}
}
++left;
if (!flag) {
break;
}
}
}
int main() {
int arr[] = {8, -1, 0, 6, -2, 1, 7, 9, 0, 2, 5, 4, 3};
int len = sizeof(arr) / sizeof(arr[0]);
bubbleSort(arr, len);
for (const int &temp: arr) {
cout << temp << " ";
}
cout << endl;
return 0;
}
双向冒泡排序-C++
最新推荐文章于 2022-11-08 15:09:36 发布