二分法基本使用

本文详细介绍了如何在JavaScript中使用二分法查找有序数组中的特定元素,包括代码实现、工作原理及示例。适合理解搜索算法和编程实践者阅读。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二分法的使用

二分法, 也成为折半法,是一种在有序数组中查找特定元素的搜索算法
不同的语言版本写法有一点点不同,当下记录再JavaScript中的写法
写法1:

// 要求:从数组中查找指定的元素,返回元素的索引,如没找到返回 -1
// 传入的数组是由小到大的升序排列,没有重复值,此处不加验证了
const search = (arr, num) => {
 let count = 0; // 统计计算的次数
 let left = 0; // 左边界下标
 let right = arr.length - 1; // 右边界下标
 let middle;
 while (left <= right) {
   count++;
   console.log('循环次数',count);
   // 数组的两个边界都需要计算需要使用等于比较
   middle = (left + right ) >> 1; // 取中间值,js因为除法有小数位,所以使用了位移运算
   if (num === arr[middle]) {
     return middle;
   } else if (num < arr[middle]) {
     right = middle - 1; // 重新划定右边界
   } else {
     left = middle + 1; // 重新划定左边界
   }
 }
 return -1;
};

const arr1 = [1, 2, 3, 6, 8, 9, 11, 46, 78, 98, 144];
const num1 = 11;

const res = search(arr1, num1);
console.log("打印值:", res);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值