js 二分查找

js 二分查找

二分法查找,也称为折半法,是一种在有序数组中查找特定元素的搜索算法

正常拿到的数组可能是没有经过排序的

示例:

let arr = [2, 3, 44, 5, 88, 12, 5, 6]; //没有排序过得数组

function sortFun(a,b){   //先写个sort从小到大排序函数
    return a - b
}
//arr.sort 排序完成 然后过滤
 let arrfilter = [new Set(arr.sort(sortFun)); 
 let sortArray = [...arrfilter]; // 排序数组

接下来进入正题

        /**
         * @param arr 排序好了的数组
         * @param val 查询索引的值
         **/
        function findArrIndex(arr, val) {
            let left = 0; 
            let right = arr.length - 1; // 因为索引 数组长度-1 
            while (left <= right) { // while循环 
               //整个数组长度 除以2 就是数组的一半 因为已经被排序好了 如果比中间的数字大 直接index+1 去往查找更大的 否则index-1  往左查
                let index = parseInt((right + left)) / 2; 
                // console.log(left);
                if (arr[index] === val) {
                    return index;
                } else if (arr[index] < val) {
                    left = index + 1;
                } else {
                    right = index - 1;
                }
            }
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值