JAVA 二分法检索

JAVA 二分法检索


二分法检索原理:

(1)将无序数列按递增顺序排列成有序数列

(2)比较要检索的元素和该数列中间位置元素的大小,若相等返回该中间值

(3)若比中间值大(或小),则在数列的后半部分(前半部分) 按同样的原理比较,直到找到为止

//二分法检索
import java.util.Arrays;
public class Test {
	public static void main(String[] args) {
		int[] s = { 8,55,14,89,20,44,32,6,7,1};
		//索引元素1
		int searchNum = 1;
		System.out.println(Arrays.toString(s));
		//先对数列进行排序I(递增)
		Arrays.parallelSort(s);
		System.out.println(Arrays.toString(s));
		if(binarySearch(s,searchNum) == -1) {
			System.out.println(searchNum+"元素的索引不存在");
		}
		else
			System.out.println(searchNum+"元素的索引:"+binarySearch(s,searchNum));
		
		
	}
	public static int binarySearch(int[] x,int num) {
		int low = 0;
		int high = x.length-1;
		while(low<=high) {
			int middle = (low+high)/2;
			if(num==x[middle]) {
				return middle;
			}
			if(num>x[middle]) {
				low=middle+1;
			}
			if(num<x[middle]) {
				high=middle-1;
			}
		}
		//该循环完毕仍未返回值,则返回-1
		return -1;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值