本文共 1698 字,大约阅读时间需要 5 分钟。
基本介绍:二分算法仅仅只能对已经排过序的序列进行查找,每一次和中间值进行比对,根据比对结果进行筛选。
//二分查找的非递归实现 /** * * @param arr 待查找的数组 * @param target 需要查找的目标 * @return 返回对应的下标,-1表示没有找到 */ public static int binarySearch(int[] arr,int target){ int left = 0; int right = arr.length - 1; int mid = (left + right) / 2; while (left < right){ if(arr[mid] == target){ return mid; }else if(arr[mid] > target){ right = mid - 1; }else{ left = mid + 1; } mid = (left + right) / 2; } return -1; }}
//二分查找的递归实现 /** * * @param arr 对应需要操作的数组 * @param target 对应需要寻找的目标 * @return 返回对应的目标的索引 */ public static int binary(int[] arr,int target){ if (arr == null){ return -1; }else{ return binary(0,arr.length - 1,arr,target); } } /** * * @param left 数组搜索的左极限 * @param right 数组搜索的右极限 * @param arr 对应的需要操作的目标数组 * @param target 需要查找的目标值 * @return */ public static int binary(int left,int right,int[] arr,int target){ int mid = (left + right) / 2; if(right > left){ if(arr[mid] == target){ return mid; }else if(arr[mid] > target){ right = mid - 1; return binary(left,right,arr,target); }else{ left = mid + 1; return binary(left,right,arr,target); } }else{ return -1; } }
转载地址:http://zhgpb.baihongyu.com/