二分查找法、二分排序法,返回最接近的位置和实际位置

2021-05-05 19:27

阅读:640

标签:str   spl   color   min   const   OLE   return   span   ==   

//二分查找法,返回最接近的位置和实际位置
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)

        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){
        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‘, ‘你‘
]*/

 

二分查找法、二分排序法,返回最接近的位置和实际位置

标签:str   spl   color   min   const   OLE   return   span   ==   

原文地址:https://www.cnblogs.com/caoke/p/13192156.html


评论


亲,登录后才可以留言!