Javascript 下面的quickselect方法在调用时返回undefined。它是否与quickselect自称的功能有关?
我创建了Javascript 下面的quickselect方法在调用时返回undefined。它是否与quickselect自称的功能有关?,javascript,return,quickselect,Javascript,Return,Quickselect,我创建了SortableArray类的一个实例 let test = new SortableArray([0, 50, 20, 10, 60, 30]); 然后我调用实例上的quickselect,查找第一个最低值,第一个最低值实际上是第二个最低值,因为它是零索引的 test.quickselect(1, 0, test.array.length - 1); 然后我得到undefined,这没有任何意义,因为quickselect方法包含一个return语句 类可排序数组{ 构造函数(
SortableArray
类的一个实例
let test = new SortableArray([0, 50, 20, 10, 60, 30]);
然后我调用实例上的quickselect
,查找第一个最低值,第一个最低值实际上是第二个最低值,因为它是零索引的
test.quickselect(1, 0, test.array.length - 1);
然后我得到undefined,这没有任何意义,因为quickselect方法包含一个return语句
类可排序数组{
构造函数(数组){
this.array=数组;
}
交换(指针1、指针2){
设temporary=this.array[pointer1];
this.array[pointer1]=this.array[pointer2];
this.array[pointer2]=临时
}
分区(左指针、右指针){
让计数=0;
让我们暂时;
设pivotPosition=右指针;
设pivot=this.array[pivotPosition];
右指针-=1;
做{
而((this.array[leftPointer]if/else
代码中调用quickselect
时,需要返回值,而不仅仅是在else
代码中这样做
if (kthLowestValue < pivotPosition) {
return this.quickselect(kthLowestValue, leftIndex, pivotPosition - 1);
} else if (kthLowestValue > pivotPosition) {
return this.quickselect(kthLowestValue, pivotPosition + 1, rightIndex);
} else {
return this.array[pivotPosition];
}
新代码的结果是:10
if (kthLowestValue < pivotPosition) {
return this.quickselect(kthLowestValue, leftIndex, pivotPosition - 1);
} else if (kthLowestValue > pivotPosition) {
return this.quickselect(kthLowestValue, pivotPosition + 1, rightIndex);
} else {
return this.array[pivotPosition];
}
import SortableArray from "./SortableArray";
describe('Check code', function () {
it('Run a test', function () {
let test = new SortableArray([0, 50, 20, 10, 60, 30]);
let x = test.quickselect(1, 0, test.array.length - 1);
console.log(x);
})
})