二分查找的概念原理、模板和leetcode刷题推荐(js)

二分查找算法是一种高效的数据检索方法,尤其适用于有序数组。本文通过实例解析了如何在排名前100的选手中找到第66位选手,详细介绍了二分法的分块查找流程。同时,提供了JavaScript实现的二分查找函数,并推荐了几道相关的LeetCode刷题题目,如704.二分查找、852.山脉数组的峰顶索引等,帮助读者巩固理解。

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

概念

二分法主要是解决在一堆有序的元素中查找指定的元素的问题,各种元素的查找,只要有序就可以用二分查找来优化。

二分法是一种“切块”查找的算法,大致的流程如下:

在排名前100的选手中,找到第66位选手。

  1. 二分法把100个人分为50个一组的两组,66位选手在后一组
  2. 二分法再分2组分别为50-75位和75-100位,66位在前一组
  3. …依次类推每次都是在中间切成两块,在其中一块中继续进行切块,最终找到66位

模板

var arr=Array.from({length:100},(_, i)=>1+(i))
//快速创建一个自然数数组
function binarySearch(arr,num)
{
	var left=0;
	var right=arr.length-1;
	
	while(left<=right)
	{
		var mid=Math.floor((left+right)/2);
		if(num>arr[mid])
		{
			left=mid+1;
		}else if(num<arr[mid]){
			right=mid-1;
		}else{
			return mid;
		}
		
	}
	return -1;
}

console.log(binarySearch(arr, 20));
console.log(arr)

刷题巩固

704.二分查找 链接:https://leetcode-cn.com/problems/binary-search
852.山脉数组的峰顶索引 链接:https://leetcode-cn.com/problems/first-bad-version
278.第一个错误的版本 链接:https://leetcode-cn.com/problems/first-bad-version
441.排列硬币 链接:https://leetcode-cn.com/problems/first-bad-version
1337.矩阵中战斗力最弱的K行 链接:https://leetcode-cn.com/problems/the-k-weakest-rows-in-a-matrix

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值