二分查找的实现(java版本)
一、二分法查找的定义
依次将所查找数据与中心数据对比,根据大小调整数据边界
二、二分查找的条件
数组必须排序
三、二分查找的原理
四、二分法查找的代码
/* * 从数组当中找到4所在的索引: * {2,4,6,7,43,57,90,101} */ public class Demo3 { public static void main(String[] args) { int[] arr = {2,4,6,7,43,57,90,101}; int number = 10; System.out.(method(arr, number)); } public static int method(int[] arr,int number){ int start = 0; //定义变量,记录最小的索引 int end = arr.length-1; //定义变量,记录最大的索引 int mid = (start+end)/2; //定义变量,记录中间的索引 while(arr[mid]!=number) { //只要查找的数不等于数组中间的数,就继续查找,如果中间的数等于查找的数,则mid就是要求的索引 if(number<arr[mid]) { //如果这个数比数组中间的数小,则让最大的索引=mid-1 end = mid-1; }else if(number>arr[mid]) { //如果这个数比数组中间的数大,则让最小的所用=mid+1 start = mid+1; } if(start>end) { //如果出现最小索引大于最大索引的情况,说明数组中不存在这样的元素 return -1; } mid = (start+end)/2; //每次循环后,因为首尾的索引变化了,所以中间的索引也需要变化 } return mid; //如果数组中有这个元素,则返回 } }