永发信息网

请各位看看这个C语言函数

答案:5  悬赏:70  手机版
解决时间 2021-02-23 07:15
请各位看看这个C语言函数
最佳答案
如果你在在循环初始化的时候,初始化high=n,也就是采用的是左闭右开区间,而当满足v[mid] > x的条件是, x如果存在的话应该在[low, midd)区间中,但是这里却把high赋值为mid - 1了,这样,如果恰巧mid-1就是查找的元素,那么就会找不到这个元素。
二分查找不难,重点在于要搞清区间,否则可能会遗漏某些元素。追问可是代入数据后不对啊,直接if(xhigh=mid-1的话折半不是有分数并且少一个数追答先拿个奇数个举例吧 5个:1 2 3 4 5
我们要查2 首先mid=3是吧 然后2<3 往前找,这时候我们还用比3吗 不用了 mid-1 直接找到2了
再拿偶数个 6个 1 2 3 4 5 6
我们还是查2 首先mid=3.5 但int类型mid=3 我知道你的迷惑了 你以为有分数 int整形哪有分数的
全部回答
请问有什么问题吗
二分法查找,具体你可以看一下算法解释
折半查找,当中间的数比查找的数x大时,high = mid -1意思是查找区间变成了[low,mid-1];当中间的数比查找的数x小时,low = mid -1意思是查找区间变成了[mid -1,high];
high = n-1意思是最后一个数,开始查找的区间是[0,n-1].
你这是折半查找吧,折半查找首先查找的数组必须是有序的,从小到大或者从大到小,然后定义两个标志,指向数组的第一个和最后一个元素,就是low和high,因为数组是从0开始的,所以low = 0,所以n个数的数组最后一位是n-1,所以high = n-1。折半的思路就是找出数组的中间元素v[mid]的值,与待查找数X比较,若X比mid小,说明X在low到mid-1这个区间,所以把high = mid -1,若是X=mid,则返回mid,找到,若X比mid大,说明X在mid+1到high这个区间,所以把low= mid+1,重复这个动作直到找到或者数组中不存在这个X追问可是代入数据后不对啊,应该是在“若X比mid小,说明X在low到MID这个区间”吧追答mid已经判断过要比X大了,所以区间变成mid - 1
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
支护结构破坏、土体失稳或过大变形对基坑周边
什么叫作洪荒,什么叫作混沌
广州208公交车现在怎么那么少、等车都要等半
拖出去ALB什么意思?
雅马哈100摩托车加速到60就加不了了,化油器
茫茫什么?四字词语
我的肚子里肚脐上面能摸到一块硬东西怎么回事
下列各项中,不属于竹叶石膏汤组成药物的是A.
车窗玻璃上出现裂纹
李成相地址在什么地方,想过去办事
发红山地址有知道的么?有点事想过去
比较蒙古的两个习俗与中国有什么不同
在保证项目完整性的前提下,甲建设单位将工程
关于友情永恒的古诗
通风机高低压相应分类有哪些?
推荐资讯
=INT(IF(C54>D54,D54/0.3,C54/0.3))公司是什
幼儿园老师家访的主要目的是什么?
粉的似霞绿的似什么
关于图示结构中杆件a和b内力数值(绝对值)的
中国移动通信金手指通讯指定专营店在哪里啊,
我国刑法规定盗窃案件多少年注销
36寸画框,换成厘米,是多大?
请问,怎样简单清洗羊毛衫上的油点?,很麻烦总
重水D2O的离子积为1.6×10-15.可以用pH一样的
二舅大排档在哪里啊,我有事要去这个地方
觅城鲜饮地址有知道的么?有点事想过去
祥胜建材在什么地方啊,我要过去处理事情
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?