目录
思路
代码实现
// 二分法查找非递归方式
public class BinarySearchNoRecur {
public static void main(String[] args) {
//测试
int[] arr = {1,3, 8, 10, 11, 67, 100};
int index = search(arr, 100);
System.out.println("index=" + index);//
}
public static int search(int[] nums, int target){
int left = 1, right = nums.length - 1;
int mid;
int temp;
int ans = 0;
while (left <= right) { // 循环直至区间左右端点相同
mid = left + (right - left) / 2; // 防止计算时溢出
temp = nums[mid];
if (temp == target) {
return mid;
}
if(temp < target){
left = mid + 1; // 答案在区间 [mid+1, right] 中
}
if (temp > target){
ans = mid;
right = mid; // 答案在区间 [left, mid] 中
}
}
// 此时有 left == right,区间缩为一个点,即为答案
return ans;
}
}