冒泡排序

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;
    }
}
發佈了79 篇原創文章 · 獲贊 58 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章