c语言将折半查找一个数组,c语言作业(数组&折半查找法).doc

这篇实验报告详细介绍了使用C语言实现折半查找法的过程,包括数组的初始化、输入/输出操作以及冒泡排序。实验中,首先对一个无序数组进行冒泡排序,然后采用折半查找法寻找指定数值。如果找到目标值,输出其在数组中的位置;否则显示未找到。实验者通过这个过程加深了对C语言编程的理解,特别是数组操作和查找算法的运用。

您所在位置:网站首页 > 海量文档

&nbsp>&nbsp计算机&nbsp>&nbspC/C++资料

7e3e25dd1884ce9b7725a69a698d5758.gif

c语言作业(数组&折半查找法).doc8页

本文档一共被下载:2377011b61454b208b34ad77b4c31088.gif次,您可全文免费在线阅读后下载本文档。

072ad097814a33d1ad18e33ca14a5a9e.png

9ec2792a743ebdf4575ee09a03c275ea.png

7af312d1be2cfc1e59f15880bb7a7e7a.png

5f207613e329ca76dc87c76d3ff77e64.png

adf7aa3071c520b8a2063089f549261c.png

下载提示

1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。

2.该文档所得收入(下载+内容+预览三)归上传者、原创者。

3.登录后可充值,立即自动返金币,充值渠道很便利

C语言程序设计实验报告

实验名称数组学 院材冶学院专业班级成型1101姓 名李xx学 号2011任课教师徐彬实验时间2012年11月2日星期五

实验目的

熟练掌握一维数组、二维数组的定义、初始化和输入/输出方法;

熟练掌握字符数组和字符串函数的使用;

掌握与数组有关的常用方法(如查找、排序等)。

实验内容

编程实现“折半查找”的过程。

要求

设定一个整型数组存放20个元素,采用直接赋值的方法在程序之初始化该数组;

用scanf函数输入一个要找的数值;

对查找的结果给出相应的说明,如果找到该数值,则输出“Found”信息,并给出该数是数组中的第几个元素。如果该数值不在数组中,则输出“Not found”信息;

修改程序,设定输入的数据是无序的,则先要对这些无序的数据进行排序,然后在采用“半折查找”。

算法描述流程图

Y

Y

Y

Y

Y

Y

源程序

#include

main()

{

int a[20],i,t,j,b,q,d,c,min=0,max=19,p=10,s=10;

for(i=0;i<20;i++)

scanf("%d",&a[i]);

printf("\n");

for(i=0;i<19;i++)

{

for(j=0;j<19;j++)

if(a[j]>a[j+1])

{

t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}

}

for(i=0;i<20;i++)

printf("%d",a[i]);

printf("请输入要查找的数");

scanf ("%d",&b);

for (q=1;q<=10;q++)

{

if (max-min!=0)

{

if(b==a[s])

{

d=1;

break;

}

else

{

if(b>a[s])

{

c=s;

s=max-(max-min)/2;

min=c;

d=0;

}

else

c=s;

s=(max-min)/2+min;

max=c;

d=0;

}

}

}

if(d==1)

{

s=s+1;

printf("Found 在第%d\n位",s);

}

else

printf("not found\n");

}

5测试数据

20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1

运行结果

出现问题及解决方法

这个实验太难了,出现各种问题,最后大家齐心协力完成了任务,主要是冒泡法的应用及折半查找法的应用比较困难。

实验心得

1.通过实验我对c语言的编程语言更加熟悉,加快编程输入语言的速度。

2.掌握一维数组、二维数组的定义、初始化和输入/输出方法;掌握字符数组和字符串函数的使用;掌握与数组有关的常用算法(如查找、排序)。

3.再次让我明白做实验时要细心,认真检查。

开始

a[20],i,t,j,b,q,d,c,min=0,max=19,p=10,s=10

j<=19

i<=19

a[j]>a[i]

将最小的数赋给a[j]

q<9

输出Not found

q=q+1

输出Found 位置在第num=s+1 位

B是要找的数吗

b在后面c=s; s=max-(max-min)/2

min=c;

将区间小,取中点

b在前面c=s; s=(max-min)/2+min;

max=c;

将区间缩小,取中点

b>a[s]

结束

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

用户名:

验证码:

c9f2bced460b0329ba0aadbbc3f0fc71.png

匿名?

发表评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值