(算法)学习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)

猜你喜欢

转载自blog.csdn.net/tozeroblog/article/details/82885419
今日推荐