二分查找(折半查找)

二分查找,也称折半查找,是一种在有序数组中高效检索的方法。通过不断将检索区间减半,每次比较后确定目标值的位置。当找到目标值时检索成功,否则在相应区间继续进行二分查找,直至失败。该算法显著提高了查找效率。

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

在这里插入图片描述
二分法检索(binary search)又称折半检索,二分法检索的基本思想是设数组中的元素从小到大有序地存放在数组(array)中,首先将给定值key与数组中间位置上元素的关键码(key)比较,如果相等,则检索成功;

否则,若key小,则在数组前半部分中继续进行二分法检索;

若key大,则在数组后半部分中继续进行二分法检索。

这样,经过一次比较就缩小一半的检索区间,如此进行下去,直到检索成功或检索失败。

二分法检索是一种效率较高的检索方法。

import java.util.Arrays;

public class TestBinarySearch {
	public static void main(String[] args) {
		int[] arrs = {30,20,50,10,80,9,7,12,100,40,8};
		Arrays.sort(arrs);
		System.out.println(Arrays.toString(arrs));
		System.out.println(binarySearch(arrs, 30));
	}
	public static int binarySearch(int[] array, int value){
	    int low = 0;
	    int high = array.length - 1;
	    while(low <= high){
	        int middle = (low + high) / 2;
	        if(value == array[middle]){
	            return middle;         //返回查询到的索引位置
	        }
	        if(value > array[middle]){
	            low = middle + 1;
	        }
	        if(value < array[middle]){
	            high = middle - 1;
	        }
	    }
	    return -1;     //上面循环完毕,说明未找到,返回-1
		}
	}

运行结果示意图:
在这里插入图片描述
希望大佬可以多多指教,小生有礼了!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值