Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 下面的quickselect方法在调用时返回undefined。它是否与quickselect自称的功能有关?_Javascript_Return_Quickselect - Fatal编程技术网

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);
    })

})