zoukankan      html  css  js  c++  java
  • 二分查找法、二分去重排序法,返回最接近的位置和实际位置

    //二分查找法,返回最接近的位置和实际位置
    function binary_find(id,hasSortArr){
        let l=0,r=hasSortArr.length;
        let index=-1;
        while(r-l>0){
            const m=(l+r)>>1;
            const mid=hasSortArr[m]
            //比较下坐标大小
            const order=id>mid?1:(id<mid?-1:0)
    
            if(order===1){
                l=Math.max(l+1,m)
            }else if(order===-1){
                r=Math.min(r-1,m)
            }else{
                l=r=m;
                index=m;
            }
        }
        return [(l+r)>>1,index]
    }
    //二分法去重排序
    function binary_sort(str) {
        const sa=[]
        for(let i=0;i<str.length;i++){
            const [n,index]=binary_find(str[i],sa);
            if(index===-1){
                sa.splice(n,0,str[i])
            }
        }
        return sa;
    }
    
    
    let str='safsdfafd12你3123123';
    console.log(binary_sort(str));
    /*[
      '1', '2',  '3',
      'a', 'd',  'f',
      's', '你'
    ]*/
  • 相关阅读:
    dd的用法
    od的用法
    Windows 7安装Oracle 10g的方法
    Ubuntu下的iptux和Windows下的飞秋互传文件
    c++ 12
    c++ 11
    c++ 10
    c++ 09
    c++ 08
    c++ 07
  • 原文地址:https://www.cnblogs.com/caoke/p/13192156.html
Copyright © 2011-2022 走看看