912. Sort an Array

137 阅读1分钟

题目描述

leetcode-cn.com/problems/so…

分析

需要选用一种排序方法进行排序,我用快排

如果本体选用左右端的值,会导致超时,所以在 pivot 的选取上需要特别注意啊

算法

快速排序

过程

选取 pivot

划分左,右数组

继续向下划分知道只有 1 个元素

合并

代码

/**
 * @param {number[]} nums
 * @return {number[]}
 */
var sortArray = function (nums) {
  return quickSort(nums)
}

function quickSort(arr = []) {
  if (arr.length <= 1) return arr

  const pivot = arr.splice(Math.floor(arr.length / 2), 1)
  const leftArr = []
  const rightArr = []

  arr.forEach((item) => {
    if (item < pivot) {
      leftArr.push(item)
    } else {
      rightArr.push(item)
    }
  })

  return [...quickSort(leftArr), pivot, ...quickSort(rightArr)]
}