cpp
#include <iostream>
#include <algorithm>
using namespace std;
int BinarySearch1(int*a, int size,int key){
int low = 0;
int high = size - 1;
while(low <= high){
int mid = (high + low) / 2;
if(a[mid] > key){
high = mid - 1;
}else if(a[mid] < key){
low = mid + 1;
}else{
return mid;
}
}
return -1;
}
int BinarySearch2(int*a, int size,int key){
int low = 0;
int high = size - 1;
if(low <= high){
int mid = (high + low) / 2;
if(a[mid] > key){
high = mid - 1;
return BinarySearch2(&a[low],high - low + 1,key);
}else if(a[mid] < key){
low = mid + 1;
return BinarySearch2(&a[low],high - low + 1,key);
}else{
return mid;
}
}
return -1;
}
int main(){
int a[] = {
2,0,9,3,8,10,5};
int size = sizeof(a) / sizeof(int);
sort(a,a + size);
for(int i = 0;i < size;i ++){
cout<<a[i]<<" ";
}
cout<<endl;
int b = 0;
while(cin>>b){
if(BinarySearch2(a,size,b) >= 0){
cout<<b<<"存在"<<endl;
}else{
cout<<b<<"不存在"<<endl;
}
}
return 0;
}
Java
import java.util.Arrays;
import java.util.Scanner;
public class BinarySearch {
public static int rank(int[] arr,int key){
int lo = 0;
int hi = arr.length - 1;
while (lo <= hi){
int mid = lo + (hi - lo) / 2;
if (arr[mid] > key){
hi = mid - 1;
}else if(arr[mid] < key){
lo = mid + 1;
}else{
return mid;
}
}
return -1;
}
public static void main(String[] args) {
int[] arr = {
2,5,1,4,9,21,13,90,66};
Arrays.sort(arr);
Scanner sc = new Scanner(System.in);
while (sc.hasNext()){
String str = sc.next();
int i = Integer.parseInt(str);
if (rank(arr,i) >= 0){
System.out.println(i + "存在");
}eles{
System.out.println(i + "不存在");
}
}
}
}