#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
void b_search( vector<int> a, int x, int size ); //二分查找函数
int main()
{
int i, x; /*定义循环变量和查找元素*/
int num, n;
vector<int> arry; /*定义数组*/
printf("输入元素个数: ");
scanf("%d", &n );
for( i=0; i<n; i++ ){
scanf("%d", &num );
arry.push_back( num ); /*将输入的元素压入数组末尾*/
}
printf("输入要查找的元素: ");
scanf("%d", &x );
sort( arry.begin(), arry.end() ); /*排序*/
b_search( arry, x, arry.size() ); /*调用二分查找函数*/
return 0;
}
void b_search( vector<int> a, int x, int size )
{
int low, high, mid; /*定义三个查找范围控制的变量*/
low = 0; /*开始查找区间为整个数组*/
high = size - 1;
while( low <= high ){ /*循环条件*/
mid = ( low + high ) / 2; /*中间位置*/
if( x == a[mid] )
break; /*查找成功则终止循环*/
else if( x < a[mid] )
high = mid - 1; /*查找元素在前半段, high前移*/
else
low = mid + 1; /*查找元素在后半段, low前移*/
}
if( low <= high ) /*找到则输出, 否则 则 Not Found*/
printf("index = %d\n", mid );
else
printf("Not Found\n");
}