【发布时间】:2018-02-14 09:49:28
【问题描述】:
我目前正在尝试在 javascript 中对数组实现快速排序。我有整体布局,但由于某种原因递归不起作用。它似乎适用于代码的第二次迭代,但在那之后,它似乎只是搞砸了。不知道我做错了什么。
function main() {
var type = "quicksort"
var testArray = [9, 6, 5, 0, 8, 2, 4, 7];
quickSort(testArray, 0, testArray.length - 1);
for (var i = 0; i < testArray.length; i++) {
console.log(testArray[i]);
}
}
function quickSort(array, start, end) {
var type = "quicksort"
var pIndex;
if (start <= end) {
pIndex = partition(array, start, end);
quickSort(array, start, pIndex - 1);
quickSort(array, pIndex + 1, end);
}
}
function partition(array, start, end) {
var x = end;
console.log(start);
var i = start - 1;
var temp;
for (var j = 0; j < end - 1; j++) {
if (array[j] <= x) {
i++;
temp = array[j];
array[j] = array[i];
array[i] = temp;
temp = 0;
}
}
temp = array[i + 1];
array[i + 1] = array[x];
array[x] = temp;
temp = 0;
return i + 1;
}
main();
【问题讨论】:
-
“搞砸”是什么意思?它做错了什么?
-
至少更正一次,
var x = array[end]。旁注,使用名称end具有误导性,可能将其更改为last。子数组最后一个元素的典型名称用法是array[end-1]或array[last]。
标签: javascript algorithm sorting quicksort