这是个很神奇的东东.... 找数组里存不存在想要的元素。
#include <stdio.h>
#include <stdlib.h>
int m; //数组长度为m
int n[100]; //全局变量
int main()
{
int BinarySearch(int x);
int t,i,a;
scanf("%d", &m);
for (i=0; i<m; i++)
{
scanf("%d", &n[i]); //递增序列 ,若不是的话,可以用sort()将之排序
}
scanf("%d" ,&t);
a = BinarySearch(t); //检索对象 比如“8”
if(a != -1)
{
printf("%d",BinarySearch(t)+1);
}
else
{
printf("Can't find it!\n");
}
system("pause");
return 0;
}
int BinarySearch(int x) //二分检索
{
int a,b,mid; //区间(a,b)为端点,mid为中间值
a = 0; //由数组n初始化,a=0
b = m - 1; //由数组n初始化,b=m-1;
while(a <= b) //当区间不为0时循环 ,直到检到a=b
{
mid = (a + b)/2;
if (x == n[mid]) //若正好要检索值等于中间值,返回mid,x=mid;
{
return mid;
}
if (x>n[mid]) //若比中间值大,则区间下界a从mid+1开始
{
a = mid+1;
}
else //若比中间直销,则区间上界b从mid-1开始
{
b = mid-1;
}
}
return(-1); //若检索不到,则返回-1,x=-1
}