美文网首页
分享一下快速排序方法

分享一下快速排序方法

作者: 落崖惊风yxy | 来源:发表于2017-12-01 19:08 被阅读0次

    今天看到了阮一峰老师的一篇日志,讲的是快速排序算法,个人认为阮老师讲得思路特别清晰明了,非常好理解·。但是苦于分享平台没有简书,又不想一个人独享这么好的教程,于是就在这里链接一下:
    http://www.ruanyifeng.com/blog/2011/04/quicksort_in_javascript.html
    大家可以去阮老师的博客里认真看看哦。
    贴一下思路:
    (1)在数据集之中,选择一个元素作为"基准"(pivot)。
    (2)所有小于"基准"的元素,都移到"基准"的左边;所有大于"基准"的元素,都移到"基准"的右边。
    (3)对"基准"左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。
    示例:

    var arr1=[85, 24, 63, 45, 17, 31, 96, 50];
            function quickSort(arr){
                if(arr.length<=1){
                    return arr;
                }
                var left=[];
                var right=[];
                var pivotIndex=Math.floor(arr.length/2);
                var pivot=arr.splice(pivotIndex,1)[0];
                for(var i=0;i<arr.length;i++){
                    if(arr[i]<pivot){
                        left.push(arr[i]);
                    }else{
                        right.push(arr[i]);
                    }
                }
                            //这里有一小点跟阮老师的不一样,就是阮老师用的是[pivot],我则直接使用的pivot,因为concat()参数非常随意,可以是数组也可以是散值,不影响结果的哦
                return quickSort(left).concat(pivot,quickSort(right));
            }
            console.log(quickSort(arr1));
    

    之前看的别的所谓的快排算法看了之后都一脸懵逼,看了阮老师的则有恍然大悟的感觉,(#.#)

    相关文章

      网友评论

          本文标题:分享一下快速排序方法

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