算法學習與代碼實現4——冒泡排序

算法學習與代碼實現4——冒泡排序

這篇博客講最簡單的一個排序算法,也是我生命中接觸的第一個排序算法。

算法思路

想當年讀大一的時候學習C語言,冒泡排序是C語言課上講的第一個排序算法,可能也是唯一一個。

思路很有趣,爲了確保序列從小到大排列,從最後兩個數開始,依次比較相鄰的兩個數,如果需要交換,就將兩個數進行交換。這種比較依次向前,直到前面的數都已經是排好序的數爲止。這樣一趟一趟的進行比較,每一趟都將最小的數“擠”到最前面。

算法性能

穩定性:穩定排序

時間複雜度: O(n^2)

空間複雜度: O(1)

僞代碼

BUBBLESORT(A)
for i <- 1 to length[A]
    do for j <- length[A] downto i + 1
        do if A[j] < A[j - 1]
            then exchange A[j] <-> A[j-1]

算法思路很很簡單,就是把小的往前擠。

c語言實現

void bubble_sort(int *array, int size){
    int tmp;
    for ( int i = 0; i < size; i++ ) {
        for ( int j = size - 1; j > i; --j ) {
            if ( array[j] < array[j-1] ) {
                tmp = array[j];
                array[j] = array[j-1];
                array[j-1] = tmp;
            }
        }
    }
}

本文代碼託管於:
https://github.com/haoranzeus/algorithms_study

發佈了51 篇原創文章 · 獲贊 2 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章