1.查找:意思就是要找到指定元素, 搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半
2.折半查找要求被查找的元素要按顺序排列(从小到大或从大到小)
#include#define NUM 10//宏定义,即代码中所有的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 =0) printf("查找成功!在第%d位!",pos+1); else printf("查找失败!"); return 0; }
以下是运行结果:



