二分查找法

需求:定义函数,接收一个数组对象,和一个要查找的目标元素,函数要返回目标元素在数组中的索引值,如果目标元素不存在,返回-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 }

 

posted @ 2017-07-27 15:31  柳青依觉  阅读(125)  评论(0编辑  收藏  举报