我在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]);
但是有没有办法只是交换数组中的元素而不是只是将元素推送到其他数组?
答案 0 :(得分:-1)
正如评论中所述,来自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;
}