// 写一个 mySetInterVal(fn, a, b),每次间隔 a,a+b,a+2b 的时间,然后写一个 myClear,停止上面的 mySetInterVal
function mySetInterVal(fn, a, b) {
let myClear = null;
interval = function (time, callback) {
// clearInterval(myClear);
myClear = setTimeout(function () {
console.log(time);
callback();
}, time);
}
interval(a, function () {
clearTimeout(myClear);
interval(a + b, function () {
clearTimeout(myClear);
interval(a + 2 * b, function () {
clearTimeout(myClear);
fn();
});
});
});
}
mySetInterVal(function () {
console.log("结束")
}, 1000, 1000);
// 合并二维有序数组成一维有序数组,归并排序的思路
function merge(arr1, arr2) {
var result = [];
while (arr1.length > 0 && arr2.length > 0) {
if (arr1[0] < arr2[0]) {
/*shift()方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。*/
result.push(arr1.shift());
} else {
result.push(arr2.shift());
}
}
return result.concat(arr1).concat(arr2);
}
function mergeSort(arr) {
let lengthArr = arr.length;
if (lengthArr === 0) {
return [];
}
while (arr.length > 1) {
let arrayItem1 = arr.shift();
let arrayItem2 = arr.shift();
let mergeArr = merge(arrayItem1, arrayItem2);
arr.push(mergeArr);
}
return arr[0];
}
let twoDimensionalArray = [[25, 26, 32, 39], [4, 6, 12, 13], [9, 16, 172, 193]];
console.log(mergeSort(twoDimensionalArray));
斐波那契数列
/**
* f(n) = f(n -1) + f(n -2)
* 0,1,1,2,3,5,8,13……
* 这个数列从第3项开始,每一项都等于前两项之和。
**/