JavaScript算法实现 -- 快速排序

1.在数据集之中,找一个基准点

  1. 建立两个数组,分别存储左边和右边的数组

  2. 利用递归进行下次比较

       function quickSort(arr) {
            if (arr.length <= 1) {
                // 如果数组只是一个元素 递归终止
                return arr
            }
            // 找到数组中间的基准索引
            let pointIndex = ~~arr.length / 2
            // 找到数组中间索引的值
            let pointValue = arr.splice(pointIndex, 1)
            let left = [], right = []
            arr.forEach(item => {
                // 基准点的左边的数传到左边数组 基准点的右边的数传到右边数组
                item < pointValue ? left.push(item) : right.push(item)
            })
            //递归不断重复比较 
            return quickSort(left).concat(pointValue, quickSort(right))
        }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • quicksort可以说是应用最广泛的排序算法之一,它的基本思想是分治法,选择一个pivot(中轴点),将小于pi...
    黎景阳阅读 479评论 0 1
  • “快速排序”的思想很简单,整个排序过程只需要三步: (1)在数据集之中,找一个基准点 (2)建立两个数组,分别存储...
    想当一个大头兵阅读 514评论 0 0
  • 一、直接插入排序 直接插入排序(Insertion Sort)的基本思想是:每次将一个待排序的元素记录,按其关键字...
    kevin16929阅读 590评论 0 0
  • 欢迎Follow我的GitHub, 关注我的简书. 本文的合集已经编著成书,高级Android开发强化实战,欢迎各...
    SpikeKing阅读 1,961评论 3 1
  • 三言两语说笔记,第一次帮忙做作业点评手绘重点,迭代两个版本,有一些心得体会。 缺点:耗时比较久,重点归纳很少。 可...
    Miss_Raquel阅读 462评论 0 1