在 javascript 中的快速排序实现中交换元素

Swap elements in a quicksort implementation in javascript

本文关键字:交换 元素 实现 javascript 快速排序      更新时间:2023-09-26

我在JavaScript中实现了一个快速排序算法。它根据元素是大于还是小于枢轴将元素推送到其他数组。它看起来像这样。

    function quickSort(array){
      if (array.length <= 1) return array;
        var left = [];
        var right = [];
        var equal = [];
        var pivot = (array.length / 2) | 0;
        for(var i = 0; i < array.length; i++) {
          if (array[i] > array[pivot]) {
            right.push(array[i]);
        } else if (array[i] < array[pivot]) {
            left.push(array[i]);
          } else {
            equal.push(array[i]);
          }
        }
        return quickSort(left).concat(equal, quickSort(right));
    }
          quickSort([3,46,78,90,48,32,13,6,45,87,32,56,45]);

但是有没有办法只交换数组中的元素,而不是将元素推送到其他数组中?

如评论中所述,来自 https://www.nczonline.net/blog/2012/11/27/computer-science-in-javascript-quicksort/

只需创建一个以数组为参考的函数,以及 2 个位置。

function swap(items, firstIndex, secondIndex){
    var temp = items[firstIndex];
    items[firstIndex] = items[secondIndex];
    items[secondIndex] = temp;
}