氣泡排序和選擇排序

2021-10-04 05:41:56 字數 1413 閱讀 6646

氣泡排序(bubble sort) 最為簡單的一種排序,通過重複走完陣列的所有元素,通過打擂台的方式兩個兩個比較,直到沒有數可以交換的時候結束這個數,再到下個數,直到整個陣列排好順序。

原理:相鄰的兩個單位,比較儲存的資料,如果第乙個單元的資料較大,就將兩個相鄰單元,交換儲存資料。

核心:

交換儲存的資料

兩個相鄰的單元,比較資料大小,第乙個單元數值較大,就交換兩個單元儲存的資料

過程:

從起始單元開始比較,第一次迴圈,會選擇出乙個最大值,放在陣列所有單元的最後

之後,每次迴圈,都會比較出乙個本次迴圈的最大值,放在當前參與比較單元的最後

之前已經比較選出的單元,不會參與下一次比較

for

(var j =

0; j <=

(arr.length-1)

-1; j++)}

}

console.

log(arr)

;

**優化

單次迴圈,最後乙個單元,通過倒數第二個單元,參與比較,最後乙個單元,就不參與單次迴圈

之前比較出的最大值,不再參與下一次的比較

n個單元,只要迴圈比較n-1次,最後就乙個單元時,不要再迴圈比較

選擇排序是直觀的排序,通過確定乙個 key 最大或最小值,再從帶排序的的數中找出最大或最小的交換到對應位置。再選擇次之。

原理

先定義迴圈的起始位置預設為最小值所在位置

從起始位置下乙個位置開始,執行迴圈

如果有位置上的數值,小於,儲存索引位置上的數值

就儲存這個位置的索引值

迴圈結束,比較儲存的索引,是否是起始位置索引

如果不是,就交換兩個位置上的數值

會將本次迴圈的最小值,放置在迴圈的起始位置上

再執行多次迴圈,完成排序

核心: 找到最小值的索引,與起始位置交換數值,先找索引 在交換數值

var arr =[3

,44,38

,5,47

,25,36

,2,79

,8,1

];for(var j =

0; j <= arr.length-1-

1; j++)}

if(min != j)

} console.

log(arr)

;

**優化:

1.之前比較的數值不參與一次標記

2.n個單元,只要比較n-1次

排序 氣泡排序和選擇排序

目錄 氣泡排序 氣泡排序原理圖 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 ...