8種經典排序之冒泡排序

冒泡排序是穩定的排序方法。
基本思想:
像泡泡一樣,輕的往上浮,重的向下沉。即小的往前,大的往後。
從最後開始比較,依次比較。
即array[n-1,n-2],array[n-2.n-3]….array[2,1],array[1,0]。
在第一輪將最小的數浮到第一個,開始第二輪比較。
還是從最後開始,依次比較。即array[n-1,n-2],array[n-2.n-3]….array[2,1]。因爲第一個已經是最小的,所以沒有必要再和第一個數比較。
直到第n-1輪循環,將整個數組變爲從小到大的有序數組。

冒泡排序原理圖解:
冒泡排序圖解

代碼實現:

#include <iostream>

//冒泡排序
void bubble_sort(int a[] , int len)
{
    //總共比較n - 1輪數
    for (int i = 0 ; i < len - 1 ; i++) {
        //從最後開始比較,讓大的數向後移動,小的數向前移動,直到將最小的一個數移到最前面,開始下一次循環。
        for (int j = len - 1  ; j > i ; j--) {
            //交換位置
            if (a[j] < a[j-1]) {
                int temp;
                temp = a[j];
                a[j] = a[j-1];
                a[j-1] = temp;
            }
        }
    }

    for (int i = 0; i < len ; i++) {
        std::cout<<a[i]<<" ";
    }
}


int main(int argc, const char * argv[]) {
    int a[] = { 11 , 22 , 44 , 55 , 63 , 76 , 8 ,9 ,3 , 5 };
    std::cout<<"需要排序的一組數爲:"<<std::endl;
    for (int i = 0; i < 10; i++) {
        std::cout<<a[i]<<" ";
    }
    std::cout<<std::endl;
    std::cout<<"冒泡排序:"<<std::endl;
    bubble_sort(a , 10);



    return 0;
}

大家有問題可以提出來,一起共同學習交流,共同進步。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章