数组和算法-数组排序-快速排序

快速排序

  • 基本思想:
  1. 我们首先在数组中选择一个基准点(一般我们选择数组中间这一项 Math.floor(ary.length/2))
  2. 拿基准点和数组中的其他项进行比较,比基准点小的方法左边,比它大的放在右边
  3. 以后每一边都重复上述两个操作,直到当前这一边只有一项的时候停止

下面上代码

function quickSort(ary) {
        if (ary.length <= 1) {
            return ary;
        }
        var pointIndex = Math.floor(ary.length / 2);//找到基准点索引
        var pointValue = ary.splice(pointIndex, 1)[0];//找到基准点的值,删除掉,并拿出来。此处是一个数组。因此还要取值[0]
        // 接下来拿基准值和数组进行比较,把小于基准值的放在基准值的左边,大的放在右边
        var left = [];
        var right = [];
        for (var i = 0; i < ary.length; i++) {
            var cur = ary[i];
            cur < pointValue ? left.push(cur) : right.push(cur);
        }
        return quickSort(left).concat([pointValue],quickSort(right)); //此处用到递归
    }
    var ary = [15, 13, 17, 11, 8, 20, 22];
    var res = quickSort(ary);
    console.log(res);

结果是:[8, 11, 13, 15, 17, 20, 22]

最后要说的话:写程序要注意细节,细节决定不了你知识的深度,但是细节能决定你的路有多远!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、冒泡排序: 思想:让当前项和后一项比较,如果当前项大于后一项,两者交换位置。每一轮当前项和后一项两两比较的话,...
    gaoqizhuhui阅读 318评论 0 0
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,268评论 0 4
  • 数组方法的小总结 从数组末尾删除一项,有哪些方法?ary.length--ary.length-=1; ary.l...
    固执_i阅读 214评论 0 0
  • 数组去重 方法1:用for双重循环 方法2:先sort,然后用当前项和相邻项进行比较 方法3:建立新数组,用ind...
    Chevy_Guo阅读 391评论 0 0
  • 不知道什么时候开始,习惯了晚睡。就算很早就做完了要做的事,仍然会拖拖拉拉,没事找事直到一两点才能去睡觉。 现在似乎...
    李不乖阅读 181评论 0 2