二分查找算法

本文详细介绍了一种高效的查找算法——二分查找。该算法要求待查找序列有序,通过不断将查找区间对半划分来缩小查找范围,实现快速定位目标值。文章提供了具体的实现代码,并分析了其时间复杂度为O(logn),空间复杂度为O(1)。
摘要由CSDN通过智能技术生成

二分查找

前提:待查找的序列有序。

思想:每次查找都取查找范围二分之一处的元素与目标值进行比较。

思路分析:

  • 三个初始值:左标签left为0,右标签right为数组长度-1,中间位置mid为(left+right)/2。
  • 如果不满足left<=right,说明找不到目标值,直接返回-1
  • array[mid] == target,说明找到目标值,直接返回mid
  • array[mid] > target,说明目标值小,需要往左继续寻找,右标签需要左移right = mid - 1
  • array[mid] < target,说明目标值大,需要往右继续寻找,左标签需要右移left = mid + 1

代码示例:

public static int binary_search(int[] array,int target) {
		int left = 0; //左指针
		int right = array.length-1; //右指针
		int mid; //中间位置
		while (left <= right) {
			mid = (left + right)/2;
			if (array[mid] == target) { //找到目标值
				return mid;
			}else if (array[mid] < target) {//向右寻找
				left = mid + 1;
			}else {  //向左寻找
				right = mid - 1;
			}
		}
		return -1;  //找不到目标值返回-1
	}
  • 时间复杂度:折半搜索每次把搜索区域减少一半,时间复杂度为O(log n)。
  • 空间复杂度: O(1)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值