冒泡,顾名思义大泡上浮或小泡下沉,冒泡排序是一种反复交换相邻元素值的排序算法,每一轮交换出最大或最小值到正确的位置,n - 1轮交换结束后序列排序完成。最坏时间复杂度为O(n2)。
算法实现见BubleSort.cpp:
void swap(int &a, int &b)
{
int tmp = a;
a = b;
b = tmp;
}
void bubleSort(int array[], int n)
{
char flag = 0;
int i, j;
for (i = 0; i < n - 1; ++i) {
for (j = n - 1; j > i; --j) {
if (array[j] < array[j - 1]) {
swap(array[j], array[j - 1]);
//设置哨兵位,序列已排好序时跳出最外层for循环
flag = 1;
}
} //end of for (j = n - 1; j >= i + 1; j--)
if (!flag)
break;
} //end of for (i = 0; i < n - 1; i++)
}