function greatestProduct(array,start,end) {
if(end - start <= 0){
let productValue = array[array.length - 1] * array[array.length - 2] * array[array.length - 3];
return productValue;
}
let pivot = partition(array,start,end);
greatestProduct(array, start, pivot - 1);
greatestProduct(array, pivot + 1, end);
}
function partition(array, leftPointer, rightPointer) {
const pivotIndex = rightPointer;
const pivotValue = array[pivotIndex];
rightPointer -= 1;
while(true) {
while(array[leftPointer] < pivotValue){
leftPointer += 1;
}
while(array[rightPointer] > pivotValue){
rightPointer -= 1;
}
if(leftPointer >= rightPointer){
break;
}
else
[array[leftPointer], array[rightPointer]] = [array[rightPointer], array[leftPointer]];
leftPointer += 1;
}
[array[leftPointer], array[pivotIndex]] = [array[pivotIndex], array[leftPointer]];
return leftPointer;
}
let myArray = [2,4,1,6,3,5];
console.log(greatestProduct(myArray,0, myArray.length - 1));
我正在尝试使用快速排序首先对数组进行排序并找到数组中三个最大数字的乘积。但是,我一直得到未定义的输出,我无法确定代码的哪一部分是错误的。我仍在练习快速排序和递归,所以请不要介意我的粗心 xd