常用算法 (JS实现)

全排序列

 

function swap(array,a,b){
    var m=array[a];
        array[a]=array[b];
        array[b]=m;
}
function full_sort(array,from,to){
    if(from==to){
        console.log(array);
        return;
    }else{
        for(var i=from;i<to;i++){
            swap(array,from,i);
            full_sort(array,from+1,to);
            swap(array,from,i);
        }
    }
}

快速排序

 

function quicksort(array) {
    if (array.length <= 1) return array;
    var pivot = array[0];
    var left = [];
    var right = [];
    for (var i = 1; i < array.length; i++) {
        if (array[i] > pivot) {
            right.push(array[i])
        } else {
            left.push(array[i]);
        }
    }
    return quicksort(left).concat([pivot], quicksort(right));
}

 

 
 function swap(array,m,n) {
        var x=array[m];
            array[m]=array[n];
            array[n]=x;
 }
function partial(array,start,end){
        var m=start;
        var n=end;
        var mid=Math.floor((start+end)/2);
        console.log(mid)
        var p=array[mid];
        while(m<=n){
            while(array[m]<p){
                m++
            }
            while(array[n]>p){
                n--
            }
            if(m<=n){
                    swap(array,m,n);
                    m++;
                    n--;
            }
        }
        return m
}
function qsort(array,start,end){
        if(array.length>1){
                var index=partial(array,start,end) 
                if(start<index-1){
                    qsort(array,start,index-1)
                }
                if(index<end){
                    qsort(array,index,end)
                }
        }
        return array;
}
var a=[20,10,5,6,7,40];
qsort(a,0,5)

 

posted on 2016-03-03 17:30  dubaokun  阅读(497)  评论(0编辑  收藏  举报

导航

新浪微博 新博客 Github