//合并两个有序数组
//我的思路,合并两个数组后对新数组进行排序,冒泡排序
function mergeSortedarray(num1,num2) {
let all = num1.concat(num2)
console.log('合并后:',all)
for(let i=0;i<all.length;i++) { //注意这里写错了,正确的应该是length - 1
for(let j=i+1;j<all.length-1;j++) { //注意这里写错了,正确的是 length
if(all[i]>all[j]) {
let temp = all[i]
all[i] = all[j]
all[j] = temp
}
}
}
return all
}
let num1=[2,2,4,5,11,20]
let num2=[6,10,13,15]
console.log('排序后:',mergeSortedarray(num1,num2))
//数组排序方案:冒泡排序、选择排序、插入排序、快速排序、归并排序
//双指针写法
function sortArray(num1,num2) {
//定义两个指针
let i=0;
let j=0
let result = []
while(i<num1.length && j<num2.length) {
if(num1[i] <= num2[j]) {
result.push(num1[i])
i++
}else {
result.push(num2[j])
j++
}
}
if(i==num1.length) {
result = result.concat(num2.slice(j))
}else if(j==num2.length) {
result = result.concat(num1.slice(i))
}
return result
}
console.log('合并数组排序:',sortArray(num1,num2))
//AI的建议
// ✅ 优化写法:直接合并(推荐),不需要if判断了
function sortArray(num1,num2) {
//定义两个指针
let i=0;
let j=0
let result = []
while(i<num1.length && j<num2.length) {
if(num1[i] <= num2[j]) {
result.push(num1[i])
i++
}else {
result.push(num2[j])
j++
}
}
return result.concat(num1.slice(i)).concat(num2.slice(j));
}
console