氣泡排序和選擇排序

2021-08-29 16:10:58 字數 1738 閱讀 5610

1. 氣泡排序:

氣泡排序是一種極其簡單的排序演算法,也是我所學的第乙個排序演算法。它重複地走訪過要排序的元素,依次比較相鄰兩個元素,如果他們的順序錯誤就把他們調換過來,直到沒有元素再需要交換,排序完成。這個演算法的名字由來是因為越小(或越大)的元素會經由交換慢慢「浮」到數列的頂端。

氣泡排序演算法的運作如下:

比較相鄰的元素,如果前乙個比後乙個大,就把它們兩個調換位置。

對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。

針對所有的元素重複以上的步驟,除了最後乙個。

持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

c++**為:

#include

using namespace std;

int main() 

;int n=10;

for(int k=0;k第0輪輸出為:

6 7 2 8 1 3 9 5 0 10

第1輪輸出為:

6 2 7 1 3 8 5 0 9 10

第2輪輸出為:

2 6 1 3 7 5 0 8 9 10

第3輪輸出為:

2 1 3 6 5 0 7 8 9 10

第4輪輸出為:

1 2 3 5 0 6 7 8 9 10

第5輪輸出為:

1 2 3 0 5 6 7 8 9 10

第6輪輸出為:

1 2 0 3 5 6 7 8 9 10

第7輪輸出為:

1 0 2 3 5 6 7 8 9 10

第8輪輸出為:

0 1 2 3 5 6 7 8 9 10

第9輪輸出為:

0 1 2 3 5 6 7 8 9 10

最後輸出:

0 1 2 3 5 6 7 8 9 10

2. 選擇排序:

選擇排序也是一種簡單直觀的排序演算法。它的工作原理很容易理解:初始時在序列中找到最小(大)元素,放到序列的起始位置作為已排序序列;然後,再從剩餘未排序元素中繼續尋找最小(大)元素,放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。

注意選擇排序與氣泡排序的區別:氣泡排序通過依次交換相鄰兩個順序不合法的元素位置,從而將當前最小(大)元素放到合適的位置;而選擇排序每遍歷一次都記住了當前最小(大)元素的位置,最後僅需一次交換操作即可將其放到合適的位置。

c++**如下:

#include

using namespace std;

int main()

;int n=sizeof(arr) / sizeof(int);

for(int k=0;karr[maxx])

}if(maxx!=k)

cout<<"第"《第1輪輸出為:

9 5 2 6 8 3 1 4 0 7

第2輪輸出為:

9 8 2 6 5 3 1 4 0 7

第3輪輸出為:

9 8 7 6 5 3 1 4 0 2

第4輪輸出為:

9 8 7 6 5 3 1 4 0 2

第5輪輸出為:

9 8 7 6 5 3 1 4 0 2

第6輪輸出為:

9 8 7 6 5 4 1 3 0 2

第7輪輸出為:

9 8 7 6 5 4 3 1 0 2

第8輪輸出為:

9 8 7 6 5 4 3 2 0 1

第9輪輸出為:

9 8 7 6 5 4 3 2 1 0

排序 氣泡排序和選擇排序

目錄 氣泡排序 氣泡排序原理圖 demo 執行 選擇排序 氣泡排序原理圖 demo 執行 說明 include include using namespace std name 氣泡排序法 number 傳入陣列 length 陣列長度 setw 需要匯入 include ps 這是乙個lib.h的...

選擇排序和氣泡排序

選擇排序和氣泡排序 演算法 蠻力法選擇排序,第一次掃瞄整個陣列,找到最小元素,然後和第乙個元素交換。第二次從第二個元素開始掃瞄陣列,找到剩下的元素中最小的與第二個元素交換位置,直到最後。89 45 68 90 29 3417 17 45 68 902934 89 17 29 68 90 453489...

選擇排序和氣泡排序

選擇 從小到大排序 int a 5 a 0 a 1 a 2 a 3 a 4 5 4 3 2 1 1 5 4 3 2 第一輪比較 拿a 0 和後面的元素依次比較 如果a 0 a i 那麼兩個數交換 1 2 5 4 3 第二輪比較,拿a 1 和後面的元素依次比較,如果a 1 a i 那麼兩個數交換 1 ...