二分查找法是将一个有序数组平均分成两份,将其中间数和对应要查找的值进行比较;
例如现在我们将数组中最小的元素的下标设置为min
最大的元素的下标设置max
中间的元素下标mid=(min+max)/2
然后用预期要找的值value去进行对比
如果预期值比下标为mid的元素的值要大,则调整min的值为mid+1
如果预期值比下标为mid的元素的值要小,则调整max的值为mid-1
然后均需要重新计算mid值
直到min>max之前一直进行比较,直到找到对应的value值,并输出其下标
1 public class ArrayTools { 2 public int binarySearch(int[] arr, int value){ 3 //二分查找法,要定义mid,max,min 4 int min=0; 5 int max=arr.length-1; 6 int mid=(min+max)/2; 7 //由于不知道需要进行多少次循环,应使用while循环 8 while (max>min){ 9 //二分查找的前提是数组是有序的 10 if (value<arr[mid]){ 11 //大了,调整max值和mid值 12 max=mid-1; 13 mid=(min+max)/2; 14 }else if(value>arr[mid]){ 15 //小了。调整min值和mid值 16 min=mid+1; 17 mid=(min+max)/2; 18 }else { 19 return mid; 20 } 21 } 22 return -1; 23 } 24 }
标签:二分,Java,min,int,max,mid,查找,下标 From: https://www.cnblogs.com/bestwei/p/16637100.html