讀《啊哈!算法》——冒泡排序

冒泡排序不用多說什么了,雖然復雜度很高,但是卻這么“有名”。。。不論哪一門語言都應該會寫這個,也算入門算法吧~~
直接上代碼好了!

window.onload = function(){
    var arr=[];
    for(var i=0;i<10;i++){
        arr.push(prompt('請輸入整數'));
    }
    for(var i=0;i<arr.length-1;i++){
        for(var j=0;j<arr.length-i;j++){
            if(arr[j]>arr[j+1]){
                var temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
};

冒泡排序的一個特點是嵌套循環,外層循環的次數是一共需要進行多少趟比較,2個數需要比較一次,3個數需要2次,類推n個數需要n-1次。內層循環是每趟比較需要比較幾次,代碼中用的是arr.length-i,因為比較一趟以后最大的數已經排到最后下一次無需再做比較,所以減掉i,即之前比過的數不用比較直接進行下一趟。

讓我們來對冒泡排序封裝成一個函數吧~
function bubbleSort(arr){
    for(var i=0;i<arr.length-1;i++){
        for(var j=0;j<arr.length-i;j++){
            if(arr[j]>arr[j+1]){
                var temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
}

喏,每次對數組排序就可以直接調用函數啦。
最后,需要記住冒泡排序的時間復雜度是O(N*N)。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 概述:排序有內部排序和外部排序,內部排序是數據記錄在內存中進行排序,而外部排序是因排序的數據很大,一次不能容納全部...
    每天刷兩次牙閱讀 3,744評論 0 15
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 將一個記錄插入到已排序好...
    依依玖玥閱讀 1,282評論 0 2
  • 概述 排序有內部排序和外部排序,內部排序是數據記錄在內存中進行排序,而外部排序是因排序的數據很大,一次不能容納全部...
    蟻前閱讀 5,220評論 0 52
  • 概述排序有內部排序和外部排序,內部排序是數據記錄在內存中進行排序,而外部排序是因排序的數據很大,一次不能容納全部的...
    Luc_閱讀 2,300評論 0 35
  • 我極力推薦所有人去上香港的課程,因為它把你的過去人生全部打碎,幫你找回三歲的你,那個原來的你,那個很開心的你,雖然...
    Ammon耀明兄閱讀 200評論 0 0