public class BinarySearchNoRecur {
public static void main(String[] args) {
int size=100;
int target=10;
int[] arr=new int[size];
for (int i = 0; i<size; i++) {
arr[i]=i+1;
}
System.out.println(binarySearch(arr,0));
}
/**
* 二分查找的非递归实现
*
* @param arr 待查找的数组
* @param target 查找的树
* @return 下标,没有返回-1;
*/
public static int binarySearch(int[] arr, int target) {
int left = 0;
int right = arr.length - 1;
int cur;
while (left <= right) {
int mid = (left + right) / 2;
cur = arr[mid];
if (cur == target) {
return mid;
}
if (target > cur) {
left = mid + 1;
}
if (target < cur) {
right = mid - 1;
}
}
return -1;
}
}