冒泡排序
步驟:
1, 將列表倒序取值,兩兩比較,(前一位和後一位),如果前一位小於後一位,將兩者置換
2,每交換一輪,即每輪的最小值被移到最首位,開始下一輪比較前,將比較值的下標前移
問題:
爲什麼要倒序兩兩比較?
回想第一個步驟,結果會將每一輪比較的最小值移動到首位,這樣最終結果最小的數會跑到最前面,所以舉一反三,正序也可以,不過是要將最大往後沉
爲什麼每一輪比較後下標要往前移?
因爲每一輪比較後,這輪的最小值都會移動到最首位,第二輪已經沒有比的需要,當然可以再比較,只是沒有必要
優化
如果數據在比較一輪後已經排好序,但是按照原有的流程還是會繼續比較下去,可以判斷是否發生交換,如果沒有發生交換,停止循環
想明白後,開始寫
bubbleSort:function(){
var temp ; // 臨時變量
var arr = [90,10,2,3,9,15];
for(var i = 0; i< arr.length; i++){
for(var j = arr.length - 1; j > i ; j--){
if(arr[j] < arr[j - 1]){
temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
}
}
}
console.log("臨時變量",arr);
}