编辑
看起来你定义了
arrayLength
return merge(...)
在…的结尾
mergeSort
以下是该算法的固定版本:
function merge(arrayOne, arrayTwo){
let sorted = []
while(arrayOne.length > 0 && arrayTwo.length > 0){
if(arrayOne[0] < arrayTwo[0]){
sorted.push(arrayOne.shift());
} else{
sorted.push(arrayTwo.shift());
}
}
return sorted.concat(arrayOne).concat(arrayTwo);
}
function mergeSort(array){
let arrayLength = array.length;
let midpoint = arrayLength/2;
let firstHalf = array.slice(0, midpoint);
let secondHalf = array.slice(midpoint, arrayLength);
if(arrayLength < 2){
return array;
} else{
return merge(mergeSort(firstHalf), mergeSort(secondHalf));
}
}
可以进行其他一些优化,但以上是对
您的代码
需要解决该错误。如果您将此作为学习练习,我建议您在完成后查看其他一些实现。