我试图在JS中编写一个快速排序算法时发生了这个错误.
const x = [10, 9, 20, 3, 2, 4, 50, 69, 11, 5];
function partion(array){
let pivot = array.length - 1;
let tem_storage = 0;
let i = -1;
for (let j = 0; j <= x.length - 1; j+=1){
if (array[j] < array[pivot]){
tem_storage = array[j];
i += 1;
array[j] = array[i];
array[i] = tem_storage;
}
else if (array[i] > array[pivot]){
j += 1;
}
}
i += 1;
tem_storage = array[i];
array[i] = array[pivot];
array[pivot] = tem_storage;
return i;
}
function quick_sort(array, low, high){
if(low < high){
let pi = partion(array);
quick_sort(array, low, pi - 1);
quick_sort(array, pi + 1, high);
}
}
quick_sort(x, 0, x.length);
console.log(x);
在quick_sort
函数中,quick_sort(array, low, pi - 1);
导致错误.
我删除了那一行代码,程序似乎工作了.我对编程和算法比较陌生.我不知道为什么它会导致错误,但有人可以解释.