package com.dk.binarysearchnorecursion;
public class BinarySearchNoRecursion {
public static void main(String[] args) {
//测试
int[] arr = {1,3,8,10,11,67,100};
int index = binarySearch(arr,1);
System.out.println("index=" + index);
}
//二分查找非递归实现
/**
*
* @param arr 待查找的数组,arr是升序排列
* @param target 需要查找的数
* @return 返回对应的下标,-1表示没有找到
*/
public static int binarySearch(int[] arr,int target){
int left = 0;
int right = arr.length-1;
while (left <= right){ //可以继续查找
int mid = (left + right) / 2;
if (arr[mid] == target){
return mid;
}else if (arr[mid] > target){
right = mid - 1;//需要向左边查找
}else if (arr[mid] < target){
left = mid + 1;//需要向右边查找
}
}
return -1;//没有找到
}
}
//输出
index=0
Process finished with exit code 0
二分查找(非递归算法)
最新推荐文章于 2024-07-23 12:24:57 发布