我目前正尝试在 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();
最佳答案
一些错误:
if (start <= end) {
无需治疗病例start = end
如何 for (var j = 0
当范围从 start 开始时从 0 开始?
if (array[j] <= x) {
您将索引与项目值进行比较?
关于javascript - 在我的快速排序中递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46066149/