package wck.sort;/**
* Created on 18/9/10.
*/
/**
* @program: demo
* @description: 二分查找实现
* @author: wck
* @create: 2018-09-10 11:11
**/
public class BSearch {
/**
* 非递归实现
* @param a 目标数组,并且必须是有序的
* @param target 要查找的目标元素
* @return 返回-1代表没有查找到
*/
static int searchTarget(int[] a,int target){
//定义查找域的左右边界
int l = 0,r = a.length-1;
while (l <= r){
//数组最中间元素,(防止内存益处的做法)
int mid = l+(r-l)/2;
//中间元素刚高满足目标元素直接返回
if(a[mid] == target)
return mid;
//如果当前元素小于中间元素,就去右边界找
else if(a[mid] > target)
r = mid - 1;
//如果当前元素大于中间元素,就去左边界找
else
l = mid + 1;
}
return -1;
}
public static void main(String[] args) {
int[] a = {1,2,3,4,5,6,7,8};
System.out.println(searchTarget(a,5));
}
}
算法基础之--二分查找实现
最新推荐文章于 2023-01-19 12:16:09 发布