二分查找法
需求:定义函数,接收一个数组对象,和一个要查找的目标元素,函数要返回目标元素在数组中的索引值,如果目标元素不存在,返回-1.
思路:12 16 19 23 54 为数组的元素,该数组为有序的数组,定义三个变量,分别定义要查找元素的范围,最大索引值,最小索引值,中间索引值,中间索引值与目标元素进行比较,如果不是要查找的目标,则缩小查找范围。
1 public class 练习4 { 2 3 public static void main(String[] args) { 4 // TODO Auto-generated method stub 5 6 int[] arr={12,16,19,23,54}; 7 int index=erFen(arr,16); 8 System.out.println(index); 9 } 10 public static int erFen(int[] arr,int target) 11 { 12 while(true) 13 { 14 //定义三个变量, 15 int min=0; 16 int max=arr.length-1; 17 int mid=(max+min)/2; 18 if(target>arr[mid]) 19 { 20 min=mid+1; 21 } 22 else if(target<arr[mid]) 23 { 24 max=mid-1; 25 } 26 else 27 { 28 return mid; 29 } 30 //没有找到目标 31 if(max<min) 32 { 33 return -1; 34 } 35 mid=(min+max)/2; 36 37 } 38 39 } 40 41 }