1. 排序思路
相鄰元素兩兩進行比較,不滿足序列要求的則交換
一遍排序後,最後一個數字已經滿足條件,所以冒泡排序一共需要n-1次
冒泡排序最好的時間複雜度爲O(n),當所有數字爲正序只需要一趟排序,使用一個標記,當上一輪沒有交換時,排序完成。
冒泡排序是一種穩定的排序,一般情況下時間複雜度爲O(1+2+…+n-1)=O(n*(n-1)/2)≈O(n²)
2. Code
// 從小到大排序
void bubbleSort(int nums[], int length)
{
for(int i(length); i > 0; --i) // 外層控制內層交換到達的最後一個元素位置
{
boolean swaped = false; // 標記
for(int j(0); j < i; ++j)
{
if(nums[j] > nums[j+1]) // 如果前面一個元素大於後面一個,交換
{
swaped = true;
int tmp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = tmp;
}
}
if(!swaped) break;
}
}