首页 > 解决方案 > JavaScript quickSort 错误输出

问题描述

这是我写的快速排序算法:

var arr = [0, 2, 5, 10, 3, 22, 12, 8, 20];

let quickSort = (arr) => {
  let len = arr.length;

  if (len === 1) {
    return arr;
  };

  let pivot = arr.length - 1;

  const rightArr = [];
  const leftArr = [];

  for (let i = 0; i < len - 1; i++) {
    let j = i + 1;
    if (arr[j] > arr[pivot]) {
      rightArr.push(arr[j]);
    } else {
      leftArr.push(arr[j]);
    };
  };
  if (leftArr.length > 0 && rightArr.length > 0) {
    return [...quickSort(leftArr), pivot, ...quickSort(rightArr)];
  } else if (leftArr.length > 0 && rightArr.length <= 0) {
    return [...quickSort(leftArr), pivot];
  } else {
    return [pivot, ...quickSort(rightArr)];
  };
};

console.log(quickSort(arr));

输出是:[20, 1, 2, 3, 4, 5, 6, 8, 22]

我的问题是:为什么我会得到错误的输出,我该如何解决这个问题?

标签: javascriptalgorithmsortingquicksort

解决方案


这段代码有很多错误,但问题出在将pivot 添加到列表中而不是arr[pivot],pivot作为索引


推荐阅读