折半查找:
#include<stdio.h>
#define NUM 10
int a[]={6,12,28,37,54,65,69,83,90,92};
int BinarySearch(int s[],int n,int key)
{
int low,high,mid;
low=0;
high=n-1;
while(low<=high)
{
mid=(low+high)/2; //计算中间元素序号
if(s[mid]==key) //中间元素与关键字相等
return mid;
else if(s[mid]>key) //中间元素大于关键字
high=mid-1;
else
low=mid+1;
}
return -1; //查找失败返回-1
}
int main()
{
int key,pos;
printf("原数据为:");
for(int i=0;i<NUM;i++)
printf("%d ",a[i]);
printf("\n");
printf("请输入关键字:");
scanf("%d",&key);
pos=BinarySearch(a,NUM,key);
if(pos>=0)
printf("查找成功!在第%d位!",pos+1);
else
printf("查找失败!");
return 0;
}