- public class day4Test2 {
- public static void main(String[] args) {
- int[] arr = {1,3,4,5,6,9};
- System.out.println(halfSearch_2(arr,5));
- }
- public static int halfSearch_1(int[] arr,int key){
- //折半查找方法1
- int max=arr.length-1,min=0,mid=(max+min)/2;
- while(arr[mid]!=key){
-
- if(arr[mid]>key)
- max=mid-1;
- else if(arr[mid]<key)
- min=mid+1;
- if(min>max)
- return -1;
- mid=(max+min)/2;
- }
- return mid;
- }
- public static int halfSearch_2(int[] arr,int key){
- //折半查找方法2,相较于1要简单,这里注意else if的使用,如果没有else if则第一个条件没满足直接跳到else执行。
- int max=arr.length-1,min=0,mid;
- while(min<=max){
- mid=(max+min)>>1;
- if(arr[mid]>key)
- max=mid-1;
- else if(arr[mid]<key)
- min=mid+1;
- else
- return mid;
- }
- return -1;//这里如果返回 min则可以实现知道插入元素位置的功能。
- }
- }
复制代码 |
|