(算法)学习JavaScript数据结构与算法——选择排序(二)

【选择排序】

  • 算法思想:

先找到最小的数放在第一个位置,然后依次找到第二、第三...小的数依次放置在第二、第三...定位位置上

  • 具体实现:
this.selectionSort=function(){
    var length=array.length,
        indexMin;
    for(var i=0;i<length-1;i++){
        indexMin=i;
        for(var j=i;j<length;j++){
            if(array[indexMin]>array[j]){
                indexMin=j;
            }
        }
    }
    if(i!==indexMin){
        swap(array,i,indexMin);
    }
}

完整实现:

    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.selectionSort=function(){
            var length=array.length,
                    indexMin;
            for(var i=0;i<length-1;i++){
                indexMin=i;
                for(var j=i;j<length;j++){
                    if(array[indexMin]>array[j]){
                        indexMin=j;
                    }
                }
                if(i!==indexMin){
                    swap(array,i,indexMin);
                }
            }
        }
    }
    function createNonSortedArray(size){
        var array=new ArrayList();
        for(var i=size;i>0;i--){
            array.insert(i);
        }
        return array;
    }
    array=createNonSortedArray(5);
    console.log(array.toString());
    array.selectionSort();
    console.log(array.toString());

算法复杂度:

时间:O(n^2)

空间:O(1)

猜你喜欢

转载自blog.csdn.net/tozeroblog/article/details/82886649