Skip to content

Latest commit

 

History

History
49 lines (34 loc) · 844 Bytes

File metadata and controls

49 lines (34 loc) · 844 Bytes

912. Sort an Array

Leetcode link

题目简介

题目要求我们给数组升序排列,要求 nlogn 的时间复杂度以及不能使用内置排序方法

解题思路

直接快排秒了

Javascript

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

Array.prototype.quickSort = function (left = 0, right = this.length - 1) {
  if (left >= right) {
    return this;
  }

  let i = left - 1;
  let j = right + 1;

  const pivot = this[Math.floor((i + j) / 2)];

  while (i < j) {
    while (this[++i] < pivot);
    while (this[--j] > pivot);

    if (i < j) {
      [this[i], this[j]] = [this[j], this[i]];
    }
  }

  this.quickSort(left, j);
  this.quickSort(j + 1, right);

  return this;
}