#include <stdio.h>
#include <stdlib.h>
int binarySearch();
int binarySearchRecursive(int a[], int start, int end, int target);
int main()
{
int a[5] = {2,8,9,13,21};
int pos1 = binarySearch(a, 5, 6);
printf("%d\n", pos1);
int pos2 = binarySearchRecursive(a,0,4,6);
printf("%d\n", pos2);
return 0;
}
//Iterative
int binarySearch(int a[], int n, int target){
int low = 0;
int high = n - 1;
int mid;
while(low <= high){
mid = (low + high)/2;
if(a[mid] == target){
return mid;
}else if(a[mid] > target){
high = mid - 1;
}else{
low = mid + 1;
}
}
return -1;
}
//Recursive
int binarySearchRecursive(int a[], int start, int end, int target){
if(start > end){
return -1;
}
int mid = start + (end - start)/2;
if(a[mid] == target){
return mid;
}else if(a[mid] > target){
return binarySearchRecursive(a, start, mid - 1, target);
}else{
return binarySearchRecursive(a, mid+1, end, target);
}
}
Binary Search Implementation
最新推荐文章于 2021-07-20 04:26:08 发布