私は現在、javascriptの配列にquicksortを実装しようとしています。私は全体のレイアウトを持っていますが、何らかの理由で再帰が機能していません。それはコードの2番目の反復のために働いたようですが、その後、それはちょうどうんざりするようです。私が間違ったことを確信していない。クイックソートの再帰
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
少なくとも1つの修正、 'var x = array [end]'。サイドノートでは、 'end'という名前を使用して誤解を招く恐れがあります。おそらく' last'に変更してください。サブアレイの最後の要素の典型的な名前の使用法は 'array [end-1]'または 'array [last]'です。 – rcgldr