折半查找的效率比较高,但是前提条件是数组中的元素按序排列。
练习:查找一个元素在数组中第一次出现的位置,如果数组中没有此元素,则返回-1;
public class ArrayTest3{
public static void main(String[] args){
int[] arr={1,3,4,6,8,9,10};
int index=HalfSearch(arr,4);
System.out.println("index="+index);
}
public static int HalfSearch(int[] arr,int key){
int min=0;
int max=arr.length-1;
int mid=(min+max)/2;
while(arr[mid]!=key){
if(key>arr[mid])
min=mid+1;
else
max=mid-1;
if(min>max)
return -1;
mid=(min+max)/2;
}
return mid;
}
}
public class ArrayTest4{
public static void main(String[] args){
int[] arr={1,3,4,6,8,9,10};
int index=HalfSearch_2(arr,4);
System.out.println("index="+index);
}
public static int HalfSearch_2(int[] arr,int key){
int min=0;
int max=arr.length-1;
int mid;
while(min<=max){
mid=(min+max)/2;
if(key>arr[mid])
min=mid+1;
else if(key