/*
数组---折半查找
*/
class ArrayDemo{
/*
折半查找可以提高效率,但是必须要求数组是有序的
*/
public static int halfSearch(int[] arr,int key){
int min,max,mid;
min=0;
max=arr.length-1;
mid=(max+min)/2;
while(arr[mid]!=key){
if(key>arr[mid])
min=mid+1;
else if(key<arr[mid])
max=mid-1;
if(min>max)
return -1;
mid=(max+min)/2;
}
return mid;
}
/*
折半第二种方式
只要min<=max 就可以折半
*/
public static int halfSearch_2(int[] arr,int key){
int min,max,mid;
min=0;
max=arr.length-1;
while(min<=max){
mid=(max+min)>>1;
if(key>arr[mid])
min=mid+1;
else if(key<arr[mid])
max=mid-1;
else
return mid;
}
return -1;
}
public static void main(String[] args){
int[] arr={1,3,5,8,9,22,55,77};
int index=halfSearch(arr,22);
System.out.println(index);
index=halfSearch_2(arr,55);
System.out.println(index);
}
}
数组---折半查找
*/
class ArrayDemo{
/*
折半查找可以提高效率,但是必须要求数组是有序的
*/
public static int halfSearch(int[] arr,int key){
int min,max,mid;
min=0;
max=arr.length-1;
mid=(max+min)/2;
while(arr[mid]!=key){
if(key>arr[mid])
min=mid+1;
else if(key<arr[mid])
max=mid-1;
if(min>max)
return -1;
mid=(max+min)/2;
}
return mid;
}
/*
折半第二种方式
只要min<=max 就可以折半
*/
public static int halfSearch_2(int[] arr,int key){
int min,max,mid;
min=0;
max=arr.length-1;
while(min<=max){
mid=(max+min)>>1;
if(key>arr[mid])
min=mid+1;
else if(key<arr[mid])
max=mid-1;
else
return mid;
}
return -1;
}
public static void main(String[] args){
int[] arr={1,3,5,8,9,22,55,77};
int index=halfSearch(arr,22);
System.out.println(index);
index=halfSearch_2(arr,55);
System.out.println(index);
}
}