思想
冒泡排序是众多排序算法中较为简单的一类,其核心在于交换,每次从前往后或者从后往前相邻元素进行比较,如果为逆序,则进行交换。因此对于n个元素,每一趟可将当前剩余元素中的最大值或最小值放到确定的位置。共进行n-1趟。可设置一个标志flag进行优化。
#include <iostream>
using namespace std;
void BubbleSort(int *a) {
for (int i = 1; i < 10; ++i) { //共进行n-1趟排序
bool flag = false;//标记位优化,如果某趟排序中未移动元素,说明已有序
for (int j = 0; j < 10 - i; ++j) {
if (a[j] > a[j + 1]) { //相邻两个元素之间进行比较
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
flag = true;
}
}
if (flag == false)
return;
}
}
int main() {
int a[] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
BubbleSort(a);
for (int i = 0; i < 10; ++i) {
cout << a[i] << " ";
}
return 0;
}