java代码实现
public static void main(String[] args) {
int[] arr1={2,11,15,19,30,32,61,72,88,90,96};int a=arr1.length-1;
int b=15;
System.out.println(erfen(arr1,a,b));
}
public static int erfen(int arr[],int n,int key){
int low=0; //数组的第一个下标
int high=n; //数组的最后一个下标
int mid; //中间值
while(low<=high){
mid=(low+high)/2; / /5
if(arr[mid]==key){ //判断32==15
return mid;
}
if(key<arr[mid]){ //15<32
high=mid-1; / /5-1
}else if(key>arr[mid]){
low=mid+1;
}
}
return -1;
}
递归实现
public static int digui(int[] arr,int low,int high,int key){
int mid=low+(high-low)/2;
if(low>high){
return -1;
}
else{
if(arr[mid]==key){
return mid;
}
else if(arr[mid]>key){
return digui(arr,low,mid-1,key);
}
else if(arr[mid]<key){
return digui(arr,mid+1,high,key);
}
}
return -1;
}
刚刚接触算法这块,上面有什么不对的麻烦指出,共同进步!!!