把两个数组 ['A1', 'A2', 'B1', 'B2', 'C1', 'C2', 'D1', 'D2'] 和 ['A', 'B', 'C', 'D'],
合并为 ['A1', 'A2', 'A', 'B1', 'B2', 'B', 'C1', 'C2', 'C', 'D1', 'D2', 'D']
思路1:
array2作为被比较的基准数组,去遍历array1,
charAt(0)===array2[i]作为判断依据,遍历的每次结果塞进第三个数组中。
思路2:
用Map.sort,先为array的每个元素添加一个3,
然后合并数组后,sort排序。
最后去掉所有带3的元素尾巴
思路一的实现,参考:
const ret = []
let tmp = arr2[0], j = 0 // j是指向array2的索引
for (let i=0;i<arr1.length;i++) {
if (tmp === arr1[i].charAt(0)){
ret.push(arr1[i])
}else {
ret.push(tmp)
ret.push(arr1[i])
tmp=arr2[++j]
}
if(i===arr1.length-1){
ret.push(tmp)
}
}
console.log(ret)
思路二的实现,参考:
a2.map((item) => {
return item + '3'
})
let a3 = [...a1, ...a2].sort().map((item) => {
if(item.includes('3')){
return item.split('')[0]
}
return item
})
当数组长度小于等于10的时候,采用插入排序,大于10的时候,采用快排。
对于长度大于1000的数组,采用的是快排与插入排序混合的方式进行排序的
快排的平均时间复杂度是nlogn,在排序算法中属于效率最高的。
快排是一种不稳定的排序算法,稳定性要求