//实验内容:
//在待查找序列中查询指定的数据元素
#include<stdio.h>
#include<stdlib.h>
//函数声明
int main()
{
//定义能存储5个整数的一维数组,初始化为3,5,6,8,9
int data[5]={3,5,6,8,9};
//提示用户输入要查找的数据(可以是数组中存在的数据,也可以是数组中不存在的数据)
printf("请输入要查找的数据:");
//读入该数据,存储到变量key中
int key;
scanf("%d",&key);
//调用折半查找函数,查找该数据,如果查找成功则返回该数据在数组中的下标,如果查找失败则返回-1
int result;
result=BinarySearch(data,key,5);
//输出查找结果
if(result==-1) printf("不存在这个数据!");
else printf("数据%d在数组中的下标为%d",key,result);
return 0;
}
int BinarySearch(int a[],int key,int n)
//折半查找函数,在存储n个数据的数组a中查找给定的元素key,如果查找成功则返回该数据在数组中的下标,如果查找失败则返回-1
{
//定义变量low和high,分别用于存储搜索空间的第一个元素下标和最后一个元素下标
//初始化low为0,high为n-1
//当low<=high时,循环在数组a[]中查找给定的元素key
while(low<=high)
{
//定义整型变量middle,用于存放搜索空间的中间元素的下标
//计算中间元素的下标,存储到middle变量中
//比较key变量中的值和a[middle]中的值
//如果key==a[middle],则返回middle
//如果key<a[middle],则修改high变量为middle-1
//如果key>a[middle],则修改low变量为middle+1
}
//退出循环意味着low>high,查找失败,返回-1
}