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;
}
以下是运行结果: