非递归
def Binary_search(data, k):
# write code here
if len(data)==0:
return 0
start=0
end=len(data)-1
count=0
while(start<=end):
mid=(start+end)/2
if(data[mid]<k):
start=mid+1
if data[mid]>k:
end=mid-1
if data[mid]==k:
return mid
return -1
public int Binary_search(int [] array , int k) {
if (array.length==0) return 0;
int count=0;
int start=0;
int end=array.length-1;
while (start<=end){
int mid=(start+end)>>1;
if (k<array[mid]) end=mid-1;
if(k>array[mid]) start=mid+1;
if(k==array[mid]){
return mid;
}
return -1;
}
递归
def Binary_search(data, k,start,end):
# write code here
if len(data)==0:
return 0
if end>=start:
mid=(start+end)/2
if(data[mid]<k):
return Binary_search(data, k,mid+1,end)
if data[mid]>k:
return Binary_search(data, k,start,mid-1)
if data[mid]==k:
return mid
return -1
public int Binary_search(int [] array , int k,int start, int end) {
if (array.length==0) return 0;
if (start<=end){
int mid=(start+end)>>1;
if (k<array[mid]) return Binary_search(array ,k,start, mid-1);
if(k>array[mid]) return Binary_search(array , k,mid+1, end);
if(k==array[mid]){
return mid;
}
return -1
}