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

分享一下快速排序方法

作者: 落崖惊风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));

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

相关文章

  • 分享一下快速排序方法

    今天看到了阮一峰老师的一篇日志,讲的是快速排序算法,个人认为阮老师讲得思路特别清晰明了,非常好理解·。但是苦于分享...

  • 数组排序 冒泡排序 选择排序 插入排序 快速排序

    冒泡排序 选择排序 插入排序 快速排序 系统方法

  • 数据结构与算法 快速排序

    起因:快速排序,又称分区交换排序,简称快排,之前没有了解过,抽空学习一下。 快速排序 1 快速排序 快速排序的定义...

  • 排序算法

    冒泡排序 选择排序 插入排序 归并排序 快速排序 数组内置方法

  • 快速排序算法(OC实现)

    1.快速排序的意义:快速排序是一种优雅的排序算法,快速排序使用分而治之的策略。(一种递归式问题解决方法),快速排序...

  • 快速排序

    快速排序舞蹈 方法一

  • 快速排序

    描述 快速排序算是用得比较多的排序算法,很多库的排序方法都是用的快速排序,快速排序的平均时间复杂度为O(NlogN...

  • 实现几种常见排序方法

    Java实现几种常见排序方法 日常操作中常见的排序方法有:冒泡排序、快速排序、选择排序、插入排序、希尔排序,甚至还...

  • 桶排序与力扣(LeetCode) -164 最大间距

    在我的博客冒泡排序、插入排序、快速排序、堆排序、归并排序总结中介绍了几种经典的排序方法,其中快速排序、堆排序和归并...

  • 冒泡排序、插入排序、选择排序

    一、排序方法与复杂度归类 几种最经典、最常用的排序方法:冒泡排序、插入排序、选择排序、快速排序、归并排序、计数排序...

网友评论

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

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