1. 程式人生 > >(演算法)學習JavaScript資料結構與演算法——氣泡排序

(演算法)學習JavaScript資料結構與演算法——氣泡排序

演算法入手:演算法思想——實現方式——時間複雜度+空間複雜度

實現排序前的基本結構:

function ArrrayList(){
    var array=[];

    this.insert=function(item){
        array.push(item);
    };
    
    this.toString=function(){
        return array.join();
    }
}

氣泡排序:

  • 基本思想:

比較任何兩個相鄰的項,如果前一個比後一個大,則交換位置

  • 實現的方式:
this.bubbleSort=function(){
    var length=array.length;
    for(var i=0;i<length;i++){
        for(var j=0;j<length-1;j++){
            if(array[j]>array[j+1]){
                swap(array,j,j+1);
            }
        }
    }
}

交換位置:

function swap(array,i,j){
    var aux=array[i];
    array[i]=array[j];
    array[j]=aux;
}

完整程式碼和測試:

  //交換位置
    function swap(array,i,j){
        var aux=array[i];
        array[i]=array[j];
        array[j]=aux;
    }
    function ArrayList(){
        var array=[];
        this.insert=function(item){
            array.push(item);
        };
        this.toString=function(){
            return array.join();
        };
        //氣泡排序
        this.bubbleSort=function(){
            var length=array.length;
            for(var i=0;i<length;i++){
                for(var j=0;j<length-1;j++){
                    if(array[j]>array[j+1]){
                        swap(array,j,j+1);
                    }
                }
            }
        }
    }
    function createNonSortedArray(size){
        var array=new ArrayList();
        for(var i=size;i>0;i--){
            array.insert(i);
        }
        return array;
    }
    var array=createNonSortedArray(5);
    console.log(array.toString());
    array.bubbleSort();
    console.log(array.toString());

對冒泡的改進:

this.modifiedbubbleSort=function(){
    var length=array.length;
    for(var i=0;i<length;i++){
        for(var j=0;j<length-1-i;j++){
            if(array[j]>array[j+1]){
                swap(array,j,j+1);
            }
        }
    }
}

 時間複雜度和空間複雜度:

時間:O(n^2)

空間:O(1)