算法簡單學習(四)—— 冒泡排序

版本記錄

版本號 時間
V1.0 2017.08.15

前言

將數(shù)據(jù)結構和算法比作計算機的基石毫不為過,追求程序的高效是每一個軟件工程師的夢想。下面就是我對算法方面的基礎知識理論與實踐的總結。感興趣的可以看上面幾篇。
1. 算法簡單學習(一)—— 前言
2. 算法簡單學習(二)—— 一個簡單的插入排序
3. 算法簡單學習(三)—— 分治法與合并排序

冒泡排序

冒泡排序重復的交換相鄰的兩個反序元素。

1. 偽代碼

下面看一下偽代碼。

冒泡排序偽代碼

2. 代碼實現(xiàn)

其實冒泡排序還是很好理解的,特別是很多面試的時候經(jīng)常問冒泡排序的實現(xiàn)等等,下面我們就給出代碼,具體如下所示:

#include <stdio.h>
#include <string.h>
#include <time.h>

int main(int argc, const char * argv[])
{
    //冒泡排序
    
    int A[8] = {10, 4, 5, 7, 1, 2, 3, 6};
    int length = sizeof(A)/sizeof(A[0]);
    
    for (int i = 0; i < length - 1; i ++) {
        for (int j = length; j > i; j --) {
            if (A[j] < A[j - 1]) {
                A[j] = A[j] ^ A[j - 1];
                A[j - 1] = A[j] ^ A[j - 1];
                A[j] = A[j] ^ A[j - 1];
            }
        }
    }
    
    for (int k = 0; k < length; k++) {
        printf("%d\n",A[k]);
    }
}

下面看輸出結果

1
2
3
4
5
6
7
10

Program ended with exit code: 0

這里最外層循環(huán)輪次為length - 1 輪,內(nèi)層輪次比較為length - i輪。找到后者比前者小的元素,就用亦或交換兩個值的位置,最后for循環(huán)遍歷輸出最終排好序列的數(shù)組A。

后記

未完,待著,這一篇寫的比較少,關于冒泡也沒什么多說的。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容