這是個很神奇的東東.... 找數組裏存不存在想要的元素。
#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
}