Javascript js中的快速排序

Javascript js中的快速排序,javascript,arrays,quicksort,Javascript,Arrays,Quicksort,我在媒体上发现了这一点,我正试图弄清楚代码的实际用途 代码如下: 助手 const defaultComparator = (a, b) => { if (a < b) { return -1; } if (a > b) { return 1; } return 0; }; 我必须完全理解代码是如何工作的,但是,在你看来,我所说的是正确的吗 多亏了数组部分中的splitIndex变量轨迹,您当前正在对小于、等于或大于轴的元素之间的分隔符进行

我在媒体上发现了这一点,我正试图弄清楚代码的实际用途

代码如下:

助手

const defaultComparator = (a, b) => {
  if (a < b) {
    return -1;
  }
  if (a > b) {
    return 1;
  }
  return 0;
};
我必须完全理解代码是如何工作的,但是,在你看来,我所说的是正确的吗

多亏了数组部分中的splitIndex变量轨迹,您当前正在对小于、等于或大于轴的元素之间的分隔符进行排序。你对它工作原理的描述似乎基本正确

通常,如果遇到一个小于枢轴的元素,我们将其与splitIndex处的元素交换,以将其放入小于枢轴的部分,然后增加splitIndex以指示该部分已增长。如果我们遇到一个相等或更大的,我们就把它留在原来的位置,而不增加截面

假设splitIndex处的元素不小于pivot,这是有意义的。如果我大于splitIndex,这是正确的,因为我们已经遇到了至少一个这样的元素,并且跳过了它

例外情况是,如果我们当前正在splitIndex处检查元素,只要到目前为止所有元素都小于pivot,就会出现这种情况。在这种情况下,我们将用元素本身交换元素。这是多余的,因此这就是splitIndex的原因!==我查一下

至于

    // If the element just to the right of the split index,
    //   isn't this element, swap them.

我怀疑作者在评论中犯了一个错误。它应该是分割索引处的元素,而不是分割索引右侧的元素。

看看这个问题:这基本上是。检查splitIndex!=我可能需要比避免不必要的交换更多的时间。
 // If the element just to the right of the split index,
        //   isn't this element, swap them.
    // If the element just to the right of the split index,
    //   isn't this element, swap them.