把兩個(gè)數(shù)組 ['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作為被比較的基準(zhǔn)數(shù)組,去遍歷array1,
charAt(0)===array2[i]作為判斷依據(jù),遍歷的每次結(jié)果塞進(jìn)第三個(gè)數(shù)組中。
思路2:
用Map.sort,先為array的每個(gè)元素添加一個(gè)3,
然后合并數(shù)組后,sort排序。
最后去掉所有帶3的元素尾巴
思路一的實(shí)現(xiàn),參考:
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)
思路二的實(shí)現(xiàn),參考:
a2.map((item) => {
return item + '3'
})
let a3 = [...a1, ...a2].sort().map((item) => {
if(item.includes('3')){
return item.split('')[0]
}
return item
})
當(dāng)數(shù)組長度小于等于10的時(shí)候,采用插入排序,大于10的時(shí)候,采用快排。
對于長度大于1000的數(shù)組,采用的是快排與插入排序混合的方式進(jìn)行排序的
快排的平均時(shí)間復(fù)雜度是nlogn,在排序算法中屬于效率最高的。
快排是一種不穩(wěn)定的排序算法,穩(wěn)定性要求