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

Posted caoke

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二分查找法二分排序法,返回最接近的位置和实际位置相关的知识,希望对你有一定的参考价值。

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

 

以上是关于二分查找法二分排序法,返回最接近的位置和实际位置的主要内容,如果未能解决你的问题,请参考以下文章

Java学习 数组,查找算法,二分查找法,冒泡排序,选择排序,插入排序

使用冒泡法进行排序然后用二分查找法找出33的位置 JS

LeetCode(二分查找法) 入门练习三

冒泡排序二分查找法

用倍增法求后缀数组名次数组-JavaScript

php实现二分查找法