SOURCE

//合并两个有序数组​
//我的思路,合并两个数组后对新数组进行排序,冒泡排序
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 命令行工具 X clear

                    
>
console