美文网首页
30,合并数组-Map.sort

30,合并数组-Map.sort

作者: r8HZGEmq | 来源:发表于2019-11-27 16:25 被阅读0次
    把两个数组 ['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,在排序算法中属于效率最高的。
    快排是一种不稳定的排序算法,稳定性要求

    相关文章

      网友评论

          本文标题:30,合并数组-Map.sort

          本文链接:https://www.haomeiwen.com/subject/ogcqwctx.html