有序表的对分查找(实验报告)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、实验目的和要求
理解和掌握线性表的查找技术,使用C语言根据相应算法编写一个程序,实现顺序存储的有序表的对分查找。要求仔细阅读下面的内容,编写C程序,上机通过,并观察其结果,写出实验报告书。
二、实验内容和原理
内容:在顺序存储的长度为15的有序线性表中对分查找元素n的下标m。
原理:有序线性表的长度为15,被查元素为n,将n与线性表的中间项进行比较,分三种情况:若中间项的值等于n,则说明查到,查找结束。若n小于中间项的值,则在线性表的前半部分以相同的方法进行查找。若n大于中间项的值,则在线性表的后半部分以相同的方法进行查找。
三、主要仪器设备
计算机一台
四、实验主程序
#include
int search(int a[],int size,int x);
int main(void)
{
int a[15]={0,5,7,16,33,58,99,153,225,310,999,2314,4512,8888,9999},n,m;
printf("input a value:\n");
while(scanf("%d",&n))
{
m=search(a,15,n);
if(m!=-1)
printf("a[%d]=%d \n",m,n);
else
printf("%d is not in the arry.\n",n);
printf("input the next value\n");
}
getchar();
return 0;
}
int search(int a[],int size,int x)
{
int i=1,
j=size,
k=(i+j)/2;
while(a[k-1]!=x&&i<=j)
{