<pre name="code" class="cpp">#include<stdio.h>
/*
*本程序功能是:在已经排好序的数组A中查找值为x的元素的位置
*如果找到,则返回该元素在数组中的位置position
*否则,返回 -1
*/
int binary_search(int x, int A[], int n)
{
int low, high, center;
low = 0;
high = n-1;
while(low<=high)
{
center = (low+high)/2;
if(x== A[center]) return center;
if(x< A[center]) high = center-1;
else low = center+1;
}
return -1;
}
int main(int argc, char *argv[])
{
int a[10] = {0,3,5,7,11,34,98,112,112,456};
int position = binary_search(atoi(argv[1]), a, 10);
printf("position = %d\n",position);
}
#include<stdio.h>
/*
*本程序功能是:在已经排好序的数组A中查找值为x的元素的位置
*如果找到,则返回该元素在数组中的位置position
*否则,返回 -1
*/
int binary_search_recursive(int x, int A[], int low, int high)
{
int center;
int position;
if(low == high)
if(A[low] == x) return low;
else return -1;
center = (low+high) / 2;
if(x <= A[center])
position = binary_search_recursive(x, A, low, center);
else
position = binary_search_recursive(x, A, center+1, high);
return position;
}
int main()
{
int a[10] = {0,3,5,7,11,34,98,112,112,456};
int position = binary_search_recursive(500, a, 0, 9);
printf("position = %d\n",position);
}