排序演算法從入門到精通之二 氣泡排序

2021-08-18 17:43:36 字數 859 閱讀 2735

氣泡排序是最樸素的排序演算法。其過程就像燒水過程一樣,大的水泡從壺底一步一步冒出來,直到水面以上。其基本思想是

1. 掃瞄整個陣列,若陣列長度為n,第一趟掃瞄過程中,下標j從0到n-2, 依次比較arr[j] 與 arr[j+1] ,若前者大於後者交換這兩個元素。

2. 第一趟掃瞄完成後,最大的那個元素已經放到陣列末尾,所有最後的那個元素已經就位。所以第2次掃瞄時,只需考慮前n-1個元素,故下標j 從0 到 n-3. 在下面的程式中,在每次掃瞄時,下標j的最大值為i-1, i是從大到小依次減小的。

3. 如果在某一趟掃瞄過程中,發現不需交換元素,這說明,陣列已經是有序的,不需要做下一趟掃瞄,可直接退出。

4. 以下是源**bubble_sort.c,從這篇文章開始,每個演算法的源**都包含排序函式,和乙個測試排序函式是否可正確工作的函式

#include #include #include "sorts.h"

#define swap(a,b) \

void bubble_sort(ele_type arr, int len)

} if ( !changed)

break; }}

void test_bubble_sort()

; int len = (int) sizeof(arr) / sizeof(arr[0]);

printf("original data are:");

print_array(arr, len);

bubble_sort(arr, len);

printf("the data after sorted are:");

print_array(arr, len);

}

回溯演算法,從入門到精通

回溯演算法在資料結構中式一種常用的演算法,也是一種暴力求解法,基本思想是深度遍歷,選擇一條路一步一步走,當走不通的時候或者已經求的正確的結果,返回上一步,接著選擇另一條路走,直到遍歷完所有節點。回溯演算法是一種思想,真正用 實現的時候,大多時候都需要用的方法是遞迴。一.回溯演算法最出名的是8皇后問題...

vue 從入門到精通 二

vue提供了大量的指令,比如 v if,v bind,v on 太多,多寫專案,多看api,這裡就不多說。1 vue 的三種模組 html模板 就是基於dom的一些有效的html標籤,如 字串模板 如下,先定義字串模板,然後在vue 的選項物件裡面利用template繫結。字串模板的優先順序會比ht...

git從入門到精通(二)

git remote add origin 將本地庫與遠端庫做關聯 git push u origin master 將本地檔案推送到遠端倉庫,u 表示 自動將本地的 master 與 遠端的 master 做關聯 git config list 檢視已有的配置資訊 git reset test.t...