美文网首页
数组和算法-数组排序-快速排序

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

作者: 落雨飞尘 | 来源:发表于2017-06-30 09:47 被阅读0次

快速排序

  • 基本思想:
  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]

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

相关文章

  • PHP排序算法

    排序算法 冒泡排序(数组排序) 快速排序(数组排序) 参考 http://www.cnblogs.com/enia...

  • 算法记录

    快速排序 基本算法: 归并排序讲数组分为两个子数组分别排序,并将有序的子数组归并使得整个数组排序; 快速排序通过一...

  • 快速排序

    快速排序算法思想 快速排序和归并排序是互补的,归并排序将整个数组分成小数组,然后将排好序的小数组归并以将整个数组排...

  • 算法总结

    1.使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组 //冒泡排序(数组排序) function bubb...

  • Quick sort

    快速排序是一种分治算法,将一个数组分成两个子数组,将两部分独立的排序。快速排序和归并排序是互补的:归并排序将数组分...

  • 快速排序(Java)

    快速排序算法思想: (1)输入的数据信息:输入一个待排序的数组a[n],利用QuickSort算法实现此数组的排序...

  • 手撕代码 之 快速排序

    1.实现快速排序算法 问题描述给定一个无序数组int[ ] a,使用快速排序算法进行排序。 解题思路对于快速排序,...

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

    快速排序 基本思想: 我们首先在数组中选择一个基准点(一般我们选择数组中间这一项 Math.floor(ary.l...

  • JavaScript实现排序算法

    排序算法主要用于元素的数组排序,常见的排序算法有冒泡排序,选择排序,插入排序,希尔排序,快速排序,归并排序等,这些...

  • 排序算法

    一、排序算法总结 排序算法题目 排序算法快速排序堆排序归并排序 应用最小K个数(TopK问题)215.数组中的第K...

网友评论

      本文标题:数组和算法-数组排序-快速排序

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