【图解算法】-CH3查找算法

本文详细介绍了一种高效的查找算法——二分查找。通过设置队列首尾位置并不断缩小搜索范围来定位目标值的位置。适用于已排序的数据集,提供了完整的算法流程及Java代码实现。

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

二分查找

解题思路

  1. 假设列表已从小到大排序,并设置low,high点为队列首尾位置。
  2. 选取列表中间位置,比较查找目标值与中间位置值大小。
  3. 若比目标值大,则说明目标值可能存在中间值前面,将high设置为中间位置前一位置。
  4. 若比目标值小,则说明目标值可能存在中间值后面,将low设置成为中间位置后一位置。
  5. 若和目标值一样,则找到目标值,退出。
  6. 通过最小的low, high设置新的队列,循环执行2。
  7. 若最后循环到只剩下一个值依然没有找到,则返回-1,表示没找到。

图解示例

代码实现 

public static int searchFun(int arr[], int target) {
		int mid, low, hight;
		low = 0;
		hight = arr.length - 1;
		while (low <= hight) {
			mid = (low + hight) / 2;
			if (arr[mid] == target) {
				return mid;
			}
			else if (arr[mid] > target) {
				hight = mid - 1;
			}
			else {
				low = mid + 1;
			}
		}
		return -1;
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值