题目:
合并两个有序数组arr1=[1,3,5,7], arr2=[2,4,6,8,10,12,13],并且新数组也是有序的
实现
1.最简单:concat 合并后进行排序,但多了一步合并的操作(不写了吧,大家应该都会)?
2.使用双层循环,时间复杂度为 On2
// 先找出数组长度最大的元素放在外循环;
let outsideArr = arr1, insideArr = arr2, resultArr= []
if (arr1.length < arr2.length) {
outsideArr = arr2
insideArr = arr1
for (let i = 0; i < outsideArr.length; i++) {
for (let j = 0; j < insideArr.length; j++) {
if (outsideArr[i] < insideArr[j]) {
resultArr.push(outsideArr[i]) //谁小就写谁
} else {
resultArr.push(insideArr[i])
}
})
})
3.使用单层循环,时间复杂度为 on1
let outsideArr = arr1, insideArr = arr2, resultArr= []
if (arr1.length < arr2.length) {
outsideArr = arr2
insideArr = arr1
for (let i = 0;j=0; i < outsideArr.length; ) {
if (outsideArr[i] < insideArr[j]) {
resultArr.push(outsideArr[i]) //谁小就写谁
i += 1 // 写进谁,谁就再加1进行下一轮循环
} else {
resultArr.push(insideArr[j])
j += 1
}
})