[路飞] 排序数组

77 阅读1分钟

题目描述

给你一个整数数组 nums,请你将该数组升序排列。

解题思路

算法

快排,这里注意规避最坏复杂度的情况,我们把 pivot 取为中间 index

过程

生序的话,我们直接调用快排来完成

代码

/**
 * @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)]
}