冒泡排序

一直沒寫過和想過排序算法,今天搜了一下原理,本身嘗試了一下。
若有錯誤,請指出,請原諒
冒泡排序
網上給出的原理是經過比較兩個相鄰的值,若是左邊比右邊大,則把左右位置替換算法

var arr = [2, 6, 5, 4, 12, 8, 25, 34, 22, 45, 41, 89, 67]
for (var i = 0; i < arr.length; i++) {
        if (arr[i] > arr[i+1]) {
            var right = arr [i]
            arr[i] = arr[i+1]
            arr[i+1] = right
        }   
}
循環完成以後結果是[2, 5, 4, 6, 8, 12, 25, 22, 34, 41, 45, 67, 89],發現有些數字排列不對,還須要再次循環,在每一個i進入循環時,應該嵌套一個循環,遍歷數組,進行大小比對。

改進後的代碼
for (var i = 0; i < arr.length-1; i++) {
    for (var s = 0; s < arr.length - i - 1; s++) {
        if (arr[s] > arr[s+1]) {
            var right = arr [s]
            arr[s] = arr[s+1]
            arr[s+1] = right
    }
}
因爲第一次循環完成以後,最大的數字是排在最後的,因此最後一個循環能夠不須要。
console.log(arr) // [2, 4, 5, 6, 8, 12, 22, 25, 34, 41, 45, 67, 89]
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息