数组 {1,3, 8, 10, 11, 67, 100}, 编程实现二分查找, 要求使用非递归的方式完成。
代码实现
/** * @author zk * @version 1.0.0 * @ClassName BinarySearchNoRecur.java * @Description TODO 二分查找算法(非递归) * @createTime 2021年09月29日 14:52:00 */ public class BinarySearchNoRecur { public static void main(String[] args) { //测试 int[] arr = {1,3, 8, 10, 11, 67, 100}; int i = binarySearch(arr, 67); System.out.println(i); } //二分查找的非递归实现 /** * * @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){ left = mid + 1; }else{ right = mid - 1; } } return -1; } }
如果想看Java实现二分查找算法(采用递归方式)的代码请查看之前文章,点击前往【Java实现二分查找算法(递归)】