美文网首页
基于填坑思想的javascript版本的快排

基于填坑思想的javascript版本的快排

作者: MatrixFK | 来源:发表于2017-03-01 10:25 被阅读28次

    今天阅读了博客-http://blog.csdn.net/morewindows/article/details/6684558

    利用填坑思想来写快排,简单实用,

    现在我要利用这种方法,写javascript版本的快速排序算法。

    代码如下:

      function  QuickSort(array){
        if(array.length <= 1)
            return array;
        var b = 0,e = array.length - 1;
        //设置基准数字
        var key = array[b];
        while(b < e){
            while(b < e && key <= array[e])
                e -- ;
            if(b < e){
                array[b] = array[e];
                b++;
            }
    
            while(b < e && key > array[b])
                b ++:
    
            if(b < e){
                array[e] = array[b];
                e --;
            }
        }
    
        array[b] = key;
        var f = QuickSort(array.slice(0,b));
        var s = QuickSort(array.slice(e + 1,array.length));
        return f.concat([key],s);
    }
    
    var s = QuickSort([30,3,4,5,61,2,34,5,6,7,8,9,10]);
    console.log(s);
    

    代码虽然不长,但是还是有一些坑需要注意,就是在slice上。
    在快排中,需要往下传递的参数是不包括基准点的数组。
    但是slice(begin,end)函数,返回的数据是从 array[begin] 到 array[end - 1]的部分。
    是不需要再重复的写 end - 1的。
    基本上就是这样。

    相关文章

      网友评论

          本文标题:基于填坑思想的javascript版本的快排

          本文链接:https://www.haomeiwen.com/subject/fbhqgttx.html