1、基本思想
將數組劃分為有序區和無序區,不斷通過交換將較大元素移至無序區尾。若在某一趟排序中未發生交換事件時,或無序區已全部排序完時,則排序完畢。

2、最優情況
(待排序數組是正序)只用比較一次就行了。復雜度O(n)。
3、最差情況
(待排序數組是逆序)要比較n^2次才行,復雜度O(n^2)。
4、冒泡排序屬於穩定的排序。最壞時間復雜度O(n^2),空間復雜度O(1)。
5、代碼
將elem[]數組按遞增進行冒泡排序
void BubbleSort(int *elem, int elemLen)
{
if(elem == NULL || elemLen == 0)
{
return;
}
bool isExchange = false;//標記是否有交換數據操作
int tempElem = 0;//交換元素時,需要用到的臨時中間變量
for(int i = 0; i < elemLen; i++)
{
isExchange = false;//每趟排序前交換標記為假
for(int j = 1; j < elemLen-i; j++)
{
//比較兩元素,將較大元素交換到後面
if(elem[j-1] > elem[j])
{
tempElem = elem[j-1];
elem[j-1] = elem[j];
elem[j] = tempElem;
isExchange = true;//已有交換操作,交換標記為真
}
}
if(!isExchange)
{
break;
}
}
}