当前位置: 代码迷 >> 综合 >> 算法:快速排序及优化
  详细解决方案

算法:快速排序及优化

热度:0   发布时间:2024-03-09 12:09:40.0

快速排序是排序算法中常用的,使用的知识点主要有分治法和递归,本文主要是自己学习比上手实操代码的笔记

快速排序的思想:

1.选定一个中间值(位置在数组中居中

2.遍历数组,将小于中间值的放入一个数组left,将大于或等于中间值的放入另一个数组right,这样left中的数都比right小

3.对left和right分别重复步骤1,2,直到left和right都只剩一个数,排序完成

代码实现如下:

let numbers = [54, 68, 12, 34, 3, 2, 5, 61, 5, 4, 84, 94, 5687];function quickSort(arr) {if (arr.length <= 1) { return arr };let flag = arr.splice(Math.floor(arr.length / 2), 1)[0];let left = [];let right = [];for (let i = 0; i < arr.length; i++) {if (arr[i] < flag) {left.push(arr[i]);} else {right.push(arr[i]);}}return quickSort(left).concat([flag], quickSort(right));
}console.log(quickSort(numbers));

需要注意的点是:数组长度不可单独取出,否则会导致递归封闭,造成堆栈溢出

  相关解决方案