我在这段视频中遇到了用javascript https://www.youtube.com/watch?v=ppNZ4bmrmGs&t=195s解释合并排序的视频>
据我所知,slice()方法选择从给定start参数开始的元素,并在给定end参数但不包括
处结束。那么,当这个人试图为存储结束参数索引0的子数组创建一个变量时,结果如何呢? :const leftSide = array.slice(0, middle); const rightSide = array.slice(middle, array.length);
这里是其余代码:
const mergeSort = array => {
//Check if array can be split
if(array.length < 2) return array;
//Get Middle index
const middle = Math.floor(array.length / 2);
//Split Array In Two Sides
const leftSide = array.slice(0, middle);
const rightSide = array.slice(middle, array.length);
//Use recusion to continue splitting
console.log('split:', leftSide, rightSide);
return merge(mergeSort(leftSide), mergeSort(rightSide));
}
const merge = (left, right) => {
//Create New Array
const result = [];
//Check if left array and right array is empty
while(left.length && right.length) {
//Find lower value
if(left[0] <= right[0]) {
//Add left value
result.push(left.shift());
} else {
//Add right value
result.push(right.shift());
}
}
//Merge left array
while(left.length) result.push(left.shift());
//Merge right array
while(right.length) result.push(right.shift());
//return result array
console.log('result:', result);
return result;
}
console.log(mergeSort([5, 3, 7, 10, 4, 1, 5]));
[我在这段视频中看到了用JavaScript https://www.youtube.com/watch?v=ppNZ4bmrmGs&t=195s解释合并排序的视频,据我所知,slice()方法选择了从给定元素开始的元素...
在大多数编码语言中,索引从0开始的结果是,您可以通过获取索引小于n的所有元素来访问前n个元素。大多数编码语言的技巧都遵循此原则,例如splice
之类的函数的包含/排除属性。看看如何拆分测试数组: