我目前正試圖在JavaScript中的數組實現快速排序。我有整體佈局,但由於某種原因遞歸不起作用。它似乎已經爲代碼的第二次迭代工作,但在此之後,它似乎只是搞砸了。不知道我做錯了什麼。在我的quicksort遞歸
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();
「搞砸」是什麼意思?它做錯了什麼? – dman2306
至少有一個更正,'var x = array [end]'。注意,使用'end'這個名字會讓人產生誤解,也許會把它改成'last'。子數組的最後一個元素的典型名稱用法是'array [end-1]'或'array [last]'。 – rcgldr