javascript氣泡排序簡單介紹

admin發表於2017-03-20

本章節通過程式碼例項介紹一下氣泡排序演算法的簡單實現,先直接看段程式碼:

[JavaScript] 純文字檢視 複製程式碼
function BubbleSort(arr) {
  var temp;
  var exchange;
  for(var i=0; i<arr.length; i++) {
    exchange = false;
    for(var j=arr.length-2; j>=i; j--) {
      if((arr[j+1]) < (arr[j])) {
        temp = arr[j+1];
        arr[j+1] = arr[j];
        arr[j] = temp;
        exchange = true;
      }
    }
    if(!exchange) break;
  }
  return arr;
}
var theArray=[10,15,2,8,9,8,13,26];
console.log(BubbleSort(theArray));

以上程式碼利用氣泡排序演算法將陣列元素重新進行了排序,下面簡單介紹一下它的實現過程。

一.實現原理:

顧名思義,氣泡排序類似從水底浮出的水泡,誰最輕誰就會優先上浮,那麼陣列中的元素,最小的會首先被排到陣列的首位,依次類推,這裡就不多介紹了,具體可以參閱程式碼註釋。

二.程式碼註釋:

1.function BubbleSort(arr){},實現排序的函式,引數是要進行排序的陣列。

2.var temp,宣告一個變數,用來暫時儲存陣列元素,其實就是為了作為一個過渡,傳遞陣列元素的值之用。

3.var exchange,會被賦布林值,用來標識是否已經確定陣列元素的大小順序,也就是說陣列元素的順序已經滿足要求,如果為false,則說明滿足要求,為true的話還需要繼續排序。

4.for(var i=0; i<arr.length; i++) {},一個for迴圈語句,這個規定了最多冒泡的次數,例如一個陣列有10個元素,最差的情況就是要冒泡9次,比如恰好陣列大小順序是按照從大到小排列的。

5. exchange = false,賦初值為false。

6.for(var j=arr.length-2; j>=i; j--){},這個for迴圈非常關鍵,j=arr.length-2這個規定了是從陣列倒數第二個元素開始和倒數第一個元素開始比較(倒數第一個j+1),j>=i規定了當前冒泡結束的位置,比如第一次冒泡結束後,那麼第一個陣列元素已經是最小的了,所以也就不用再比較了。

7.if((arr[j+1]) < (arr[j])){},比較兩個陣列元素的大小。

8.temp = arr[j+1];arr[j+1] = arr[j];arr[j] = temp;exchange = true;,進行交換位置,並將exchange設定為true。

9.if(!exchange) break,跳出迴圈。

10.return arr;返回排序後的陣列。

相關文章