我正在查看合并排序代码,但我不明白我们如何一起推动和转移,如果那不是正在发生的事情,那么有人可以告诉我
result.push(node1[0] < node2[0]? node1.shift() : node2.shift());
function mergeSort (arr) {
if (arr.length < 2) {
return arr;
}
var mid = Math.floor(arr.length / 2);
var subLeft = mergeSort(arr.slice(0, mid));
var subRight = mergeSort(arr.slice(mid));
return merge(subLeft, subRight);
}
function merge (node1, node2) {
var result = [];
while (node1.length > 0 && node2.length > 0)
result.push(node1[0] < node2[0]? node1.shift() : node2.shift());
return result.concat(node1.length? node1 : node2);
}
``
答案 0 :(得分:1)
shift()方法从数组中删除第一个元素,并返回该删除的元素。此方法更改数组的长度。
var array1 = [1, 2, 3];
var firstElement = array1.shift();
console.log(array1);
// expected output: Array [2, 3]
console.log(firstElement);
// expected output: 1