氣泡排序原理及優化實現 JS

2021-08-07 04:07:23 字數 1057 閱讀 4855

假設陣列中有n個數,比較相鄰的兩項,如果前者大於後者,就把兩個數交換位置。那麼第一輪過後就可以選出乙個最大的數放在最後面;經過n-1(陣列的length-1)輪,就完成了所有數的排序。

var arr =[9

,1,5

,8,3

,7];

function

bubblesort

(arr)}}

return arr;

//[1, 3, 5, 7, 8, 9]

}

通過上述**即可實現原始的氣泡排序,但是我們想一下,外面大迴圈每比較一趟,就能將乙個最大數放到最後面,因此在內層迴圈是沒有必要將整個陣列都遍歷的。

更準確來說:

以此類推,也就是要 從內迴圈減去外迴圈中已經跑過的輪數 ,這樣就可以避免不必要的比較

var arr =[9

,1,5

,8,3

,7];

function

bubblesort

(arr)}}

return arr;

//[1, 3, 5, 7, 8, 9]

}

雖然說我們已經讓內層的迴圈減去外層的迴圈,以減少不必要的比較,但是還是會有多餘的迴圈出現。

假設現在有一組數[2,1,3,4,5,6,7,8],那麼我們只有前面兩個數字需要進行交換,別的都是正常的順序。

對於改進版1來說還是會無情的遍歷已排序好的數字,儘管沒有進行交換。

由此我們可以假設乙個標誌位來記錄是否進行了交換,如果沒有進行交換,就不要後續的迴圈判斷工作了。

var arr=[2

,1,3

,4,5

,6,7

,8];

function

bubblesort

(arr)}}

return arr;

}

以上就是氣泡排序的幾種思路。雖然在最後有一定的優化,但是總的來說,氣泡排序的平均時間複雜度為o(n^2),其空間複雜度為o(1)。

氣泡排序原理及實現

氣泡排序就是每次將重的泡泡下沉,輕的泡泡上浮。通過一次次反覆的操作,實現排序目的。下面看一下冒泡的實現 public class test bubblesort data for int i 0 isystem.out.print data i private static void bubbles...

Java 實現氣泡排序及優化

氣泡排序就是按索引逐次比較相鄰的兩個元素,滿足比較條件,則置換,否則不做改變。其優化手段可以從減少記憶體迴圈和外層迴圈著手。最差的冒泡 public void sort1 int ary system.out.println total time system.nanotime starttime ...

氣泡排序 python實現及優化

氣泡排序原理 1.比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個 否則,位置不變。2.對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。最後的元素應該會是最大的數。3.針對所有的元素重複以上的步驟,除了最後乙個。4.持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較...