有15个数按大由小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该组中第几个元素的值.

[复制链接]
查看11 | 回复1 | 2009-11-4 11:03:46 | 显示全部楼层 |阅读模式
(数已经按从大到小排列)1、若剩余数大于1,折半 找到中间值 与目标值比较2、若中间值比目标值大,则取前半部分,转1;3、若中间值比目标值大,则取前半部分,转一;,则取后半部分,转1;4、若中间值等于目标值,输出;5、剩余数不大于1,输出“无此数”;不懂再回答你。
回复

使用道具 举报

千问 | 2009-11-4 11:03:46 | 显示全部楼层
从小到大排列int find(int soure[], int low, int high, int tar){
int mid = (low+high)/2;
if(soure[mid] == tar)
return mid;
else if(low>=high)
return -1 //not find tar
else if(soure[mid]>tar)
return find(soure,mid+1,high,tar);
else
return find(soure,low,mid-1,tar);}main(){int a={15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};int tar = 5,i;i = find(a,0,14,tar);if(i==-1) printf("无此数");elseprintf("%d",find(a,0,14,tar));}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行