有序表的对分查找(实验报告)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)

{

if(x

j=k-1;

else

i=k+1;

k=(i+j)/2;

}

if(a[k-1]==x)

return k-1;

else

return -1;

}

实验结果

五、实验心得

通过实验学习,理解了有序表的对分查找的算法,明白了对分查找的效率性,并实现了用c语言编写程序,也提高了我的编程能力,受益匪浅。

相关文档
最新文档