折半查找:
设定查找范围的下限low,上限high, 由此确定查找范围的中间位置mid;中间位置的值等于待查的值,查找成功 中间位置的值小于待查的值,low=mid+1 中间位置的值大于待查的值,high=mid-1直到low>high,查找失败。 #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; }