插值查找问题
mid = low + (key - a) / (a - a) * (high - low)我想问一下,这个位置:(key - a) / (a - a) * (high - low)中的(key - a) / (a - a) 应该是永远为0哦的吧,那不是等于mid = low ,也不会算出来一个值啊,也就是说,没有算出来百分比啊。
请问这是为什么啊,这不是等于顺序查找了吗? 抛开编程 看下面的数学推论
假设
(key - a) / (a - a)≡ 0
则
-> (key - a)≡ 0
-> key ≡ a
key是楼主你想在这个有序数列里(插值)查找的值
除非楼主你每次查找的永远都是这个有序数列第一个元素
否则(key - a) / (a - a) ≠ 0 本帖最后由 ryxcaixia 于 2015-11-2 13:40 编辑
插值查找 比折半查找不同的地方就是 在于分界点mid的选取 我指的是在这个程序中(key - a) / (a - a) 永远等于0 ,要把(key - a) / (a - a) * (high - low)中的(high - low)提到最前边,,这样就能永远保证值不为0了。在程序中定义的是int型,得小数后都省略了,直接取0了。你说的那个数学问题,我再看看,一下没看明白~ 感谢分享 (key - a) / (a - a) ≠ 0 电机控制有用到!
页:
[1]