1.python
def binary_Search(Array, num,small_num=None,high_num=None):
small_num = small_num if small_num else 0
high_num = high_num if high_num is not None else len(Array) - 1
mid_num = (high_num + small_num) // 2
if small_num <= high_num:
if num > Array[mid_num]:
return binary_Search(Array,num,mid_num+1,high_num)
elif num < Array[mid_num]:
return binary_Search(Array, num, small_num,mid_num-1)
else :
return mid_num
else:
return '%s值不存在'%num
lis = [99, 222, 444, 544, 555, 567, 777, 786, 787, 991, 998, 5555, 8877]
ret = binary_Search(lis,555)
print('索引值为%s,对应值为%s'%(ret,lis[ret]))
2.java
package Package01;
public class BinarySearch {
public static void main(String[] args) {
int arr[] = {1,8,10,89,1000,1234};
int resIndex = binarySearch(arr,0,arr.length-1,1);
System.out.println("resIdex=" + resIndex);
}
public static int binarySearch(int[] arr, int left, int right, int findVal){
if (left > right) {
return -1;
}
int mid = (left+right)/2;
int midVal = arr[mid];
if(findVal > midVal){
return binarySearch(arr,mid+1,right,findVal);
}else if(findVal < midVal){
return binarySearch(arr,left,mid-1,findVal);
}else{
return mid;
}
}
}
3.C++
#include<iostream>
using namespace std;
int binarySearch(int *arr , int low , int high , int target)
{
int middle = (low + high)/2;
if(low > high)
return -1;
if(arr[middle] == target)
return middle;
if(arr[middle] > target)
return binarySearch( arr , low , middle - 1 , target);
if(arr[middle] < target)
return binarySearch( arr , middle + 1 , high , target);
};
int main()
{
int a[10] = {5,6,7,8,9, 10 , 11, 12 ,13, 14};
int index = binarySearch( a , 0 , 9 , 12);
cout<<index<< endl;
system("pause");
}