冒泡排序之我的理解

冒泡排序

步驟:
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);
            
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章