c语言15个数折半查找,C语言Ex7_9折半查找算法

《C语言Ex7_9折半查找算法》由会员分享,可在线阅读,更多相关《C语言Ex7_9折半查找算法(7页珍藏版)》请在人人文库网上搜索。

1、有15个数按从小到大的顺序存放在一个数组中。输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,输出“不在表中”。,解: 从表列中查一个数最简单的方法是从第1个数开始顺序查找,将要找的数与表列中的数一一比较,直到找到为止。如果表列中无此数,则应找到最后一个数,然后判定“找不到”。 但这种“顺序查找法”效率低,如果表列中有1000个数,且要找的数恰恰是第1000个数,则要进行999次比较才能得到结果。平均比较次数为500次。,折半查找法是效率较高的一种方法。基本思路如下: 假如有已按由小到大排好序的9个数,a1a9,其值分别为: 1, 3, 5, 7, 9, 11, 。

2、13, 15, 17,若输入一个数3,想查3是否在此数列中?则先找出表列中居中的数,即a5,将要找的数3与a5比较,a5的值是9,发现a53,显然3应当在a1到a5范围内,而不会在a6到a9范围内。这样就可以缩小查找范围,去掉a6到a9这一部分,即将查找范围缩小为一半。再找a1到a5范围内的居中的数,即a3,将要找的数3与a3比较,a3的值是5,发现a33,显然3应当在a1到a3范围内。这样又将查找范围缩小一半。再将3与a1到a3范围内的居中的数a2比较,发现要找的数3等于a2,查找结束。一共比较了3次。,#include #define N 15 void main( ) int i,number,top,bott,mid,loca,aN,flag=1,sign; char c; printf(Enter data:n); scanf(%d, ,printf(n); for(i=0;iaN-1) loca=-1;,while(!sign ,if(!sign|loca=-1)printf(can not find %d.n,number); printf(continue or not(Y/N)?n); scanf(%c,。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值