题目描述
已知从小到大有序的n个整数(n<30)和一个需要查找的整数x,使用二分查找方法在n个整数中查找x。
输入
包含多组测试数据。每组数据包含n、n个整数、整数x
输出
如果存在,输出其所在的位置,否则输出“No found!”
样例输入 Copy
5 1 3 4 6 7 6
4 1 3 4 5 2
样例输出 Copy
4
No found!
# include <stdio.h>
# include <stdlib.h>
int BinarySearch(int a[], int x, int n)
{
int left = 0;
int right = n - 1;
int middle = 0;
while(left <= right)
{
middle = (left + right) / 2;
if(x == a[middle])
{
return middle + 1;
}
if(x > a[middle])
{
left = middle + 1;
}
else
{
right = middle - 1;
}
}
return 0;
}
int main()
{
int n;
int x;
int a[30];
int i;
while(scanf("%d", &n) != EOF)
{
for(i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
scanf("%d", &x);
if(BinarySearch(a, x, n))
{
printf("%d\n", BinarySearch(a, x, n));
}
else
{
printf("No found!\n");
}
}
return 0;
}