首页 > 编程语言 > 详细

js数组排序算法 快速排序法

时间:2021-06-04 12:10:15      阅读:19      评论:0      收藏:0      [点我收藏+]

原理:

判断元素个数,若元素为空或只有1个元素,则无需排序。

否则就将第一个元素作为基准值,将数组拆分为2个数组,一个大于基准值的,一个小于基准值的。

利用递归算法,继续将上面的2个数组分别继续执行,即可得到全部排序过的新数组。

快速排序是冒泡排序的改进版。

js实现代码:

// 快速排序
function qsort(arr) {
  if (arr.length < 2) {// 没有元素或只有1个元素 无需排序
    return arr;
  } else {
    const piv = arr[0] // 第一个元素作为基准值
    let Larr = [], Rarr = []; //左侧 < 基准值数组 右侧 > 基准值数组
    for (let i = 1; i < arr.length; i++) {
      if (arr[i] < piv) {
        Larr.push(arr[i])
      } else {
        Rarr.push(arr[i])
      }
    }
    // 递归调用qsort 结果返回新数组
    return [...qsort(Larr), piv, ...qsort(Rarr)]
  }
}
const arr = qsort([5, 6, 100, 30, 50, 10, 1, 5, 3, 9, 10])
console.log(arr) // [1, 3, 5, 5, 6, 9, 10, 10, 30, 50, 100]

 

js数组排序算法 快速排序法

原文:https://www.cnblogs.com/wuhairui/p/14848612.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!