java实现二分查找

二分查找

  • 二分查找也叫做折半查找,它适用于排列有序的数组的查找。

  • 二分查找的基本原理是:对于已经排好序的序列,进过一次比较后,将序列分成两半,然后再在有可能的含有待查找元素部分继续进行查找,继续比较将查找范围缩小,直到找到或者找不到为止。

二分查找过程示意图

相关代码

/**
  * arr:   数组对象;   
  * x:     待查找数;
  * low:   起始位置;
  * hign:  结束位置;
  * mid:   中间位置;
**/
public static int binarySeach(int [] arr,int x,int low,int high)
{	
	int mid=(low+high)/2;

	//如果查找数小于起始位置所对应的数,或者大于结束位置所对应的数,则查找数不存在。
	
	if( x<arr[0] || x>arr[high] )
	{
		return -1;
	}
	
	//如果查找数小于中间位置对应数,说明查找数在左半部分,则结束位置在中间位置前一位。

	if( x<arr[mid] )
	{
		return binarySeach(arr,x,low,mid-1);
	}

	//如果查找数大于中间位置对应的数,说明它在右半部分,那么起始位置应为中间位置后一位。

	else if( x>arr[mid] )
	{
		return binarySeach(arr,x,mid+1,high);
	}

	//如果查找数正好为中间位置对应数,则返回中间位置。

	else
	{
		return mid;
	}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值