1. 程式人生 > 其它 >C語言實現氣泡排序程式碼

C語言實現氣泡排序程式碼

前言

氣泡排序法:通過重複的遍歷元素然後比較相鄰的兩個元素大小交換位置實現的。

聽說是一種比較簡單的排序演算法。

名字的由來聽說是這樣的:假設最小的值是陣列最後的元素,然後通過該排序,每重複遍歷一次該最小的元素會往前移動一個位置。

然後有點像有個泡泡在瓶子水底一直往上浮起來...

所以就冒泡唄。

至於該排序的演算法複雜度。

嗯,請查其他資料吧。

本次採用C語言的方式實現。

程式碼實現

#include <stdio.h>

// 列印陣列
void print(int *buf, int size)
{
    for (int i = 0; i < size; ++i)
    {
        printf("%d ", buf[i]);
    }

    printf("\n");
}

// 排序陣列(從小到大)
void sort(int *buf, int size)
{
    for (int i = 0; i < size - 1; ++i)
    {
        for (int j = 0; j < size - 1 - i; ++j)
        {
            if (buf[j] > buf[j + 1]) //  1.[ > 從小到大 ]  2.[ < 從大到小 ]
            {
                int tmp = buf[j];
                buf[j] = buf[j + 1];
                buf[j + 1] = tmp;
            }
        }
    }
}

// 主函式
int main(int argc, char **argv)
{
    int buf[] = {33, 2, 3, 3, 2, 1, 1, 2, 3, 3, 1, 1, 1, 1, 1, 1}; // 源陣列

    int size = sizeof(buf) / sizeof(int); // 陣列大小

    print(buf, size); // 列印氣泡排序前陣列

    sort(buf, size);  // 執行氣泡排序

    print(buf, size); // 列印氣泡排序後陣列

    return 0;
}

除錯結果

結語

嗯。

好像是簡單。

---End