js實現氣泡排序

2021-09-27 07:16:26 字數 1945 閱讀 6232

氣泡排序就是相鄰的兩個數進行比較,將大的放在後面,小的放在前面。換句話說就是,前面的數比後面的數大,就交換位置,否則不換位置,**:以陣列   

5156455

8654

第一趟排序

第一次:51和56比較,不交換位置

5156455

8654

第二次:56和45比較,交換位置

5145565

8654

第三次:56和5比較,交換位置

5145556

8654

第四次:56和86比較,不交換位置

5145556

8654

第五次:86和54比較,交換位置

5145556

54第一趟得到結果   51,45,5,56,54,86

第二趟排序

第一次:51和45比較,交換位置

4551556

54第二次:51和5比較,交換位置455

5156

54第三次:51和56比較,不交換位置455

5156

54第四次:56和54比較,交換位置455

5154

56第二趟得到的結果:455

5154

第三趟排序

第一次:45和5比較,交換位置545

5154

第二次:45和51比較,不換位置545

5154

第三次:51和54比較,不交換位置545

5154

第三趟得到的結果:545

51第四趟排序

第一次:5和45比較,不交換位置545

51第二次:45和51比較,不交換位置545

51第三趟得到的結果:545

第五趟排序

第一次:5和45比較,不交換位置545

第五趟得到結果

5最終結果為

**實現:

function res(arr)}}

return arr

}console.log(res([5,4,2,6,7,8,2]))

這樣就基本把冒泡寫好了,時間複雜度是o(n*n),但是還可以優化一下因為我們的**的第二個for迴圈,長度每次都是j如第一趟把 86 放在最後面了

5145556

54按照j也就是說趟之後,對比的長度要減少一位

function res(arr)}}

return arr

}console.log(res([5,4,2,6,7,8,2]))

這樣得到的時間複雜度也是n*n, 但是減少了不必要的排序

但是還可以再優化一下,比如有時候會有這種情況,例如陣列12

354按照氣泡排序,只需要一遍就可以排序完了,但是上面的**,會一直排序到最後,不會判斷當前的陣列是否已經排序完畢,所以這時候我們可以這麼做,我把思路寫下來。

首先我們設定乙個標誌

在某一趟全部不需要置換的時候,就排序完了

就執行了2趟,因為第二趟不需要置換位置,所以就認為全部置換完畢

這時候最好的結果就是執行了1遍,複雜度就是o(n)

所以氣泡排序的時間複雜度是

最好情況

最壞情況

平均情況 

o(n)

o(n*n)

o(n*n)

JS實現氣泡排序

氣泡排序的重要思想 相鄰資料對之間比較 比較完後大數始終大數在小數後面於是每一次相鄰資料對比較完後,大數就往上冒一點 所以,當資料為正序排列時 最好情況 比較次數,移動次數,時間複雜度最小 比較次數為 n 1 次 移動次數為 0 次 時間複雜度為 o n 然而,當資料為反序排列時 最差情況 比較次數...

JS實現氣泡排序

1.氣泡排序 思路 a 比較兩個相鄰的元素,如果後乙個比前乙個大,則交換位置 b 第一輪的時候最後乙個元素應該是最大的乙個 c 按照第一步的方法進行兩個相鄰的元素的比較,由於最後乙個元素已經是最大的了,所以最後乙個元素不用比較。function sort element console.log el...

JS實現氣泡排序

1,演算法簡介 氣泡排序是一種簡單的排序演算法,它的工作原理是重複走訪要排列的元素,一次比較兩個元素,若兩個元素有錯誤,則將它們交換,直到沒有元素再交換,排序結束。2,演算法描述 1 比較相鄰元素,如果第乙個比第二個大,就交換 2 對每一對相鄰元素作相同的工作,從第一對到最後一對,最後那個元素會是最...