分享一下快速排序方法

2017-12-01  本文已影响0人  落崖惊风yxy

今天看到了阮一峰老师的一篇日志,讲的是快速排序算法,个人认为阮老师讲得思路特别清晰明了,非常好理解·。但是苦于分享平台没有简书,又不想一个人独享这么好的教程,于是就在这里链接一下:
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));

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

上一篇下一篇

猜你喜欢

热点阅读