黑马程序员技术交流社区

标题: 二分查找返回值,如果没找到,返回的下标为什么是 负数? [打印本页]

作者: 程立彬    时间: 2011-11-22 21:30
标题: 二分查找返回值,如果没找到,返回的下标为什么是 负数?
本帖最后由 程立彬 于 2011-11-24 08:34 编辑

下标不是应该是 >= 0吗???我的意思是如果没找到,不是要返回那个元素应该插入的位置吗?
比如
有序序列 1 4 6 8
查找 3 没找到,那不是应该返回1吗,就是返回它应该插入的位置。但是我看视频上面、返回的是 负数 ,如果位置是1,那就返回 -1-1 不知为什么?
作者: 梦女孩    时间: 2011-11-22 21:58
不是没找到么...怎么可能返回正常的数呢 那要是找到了怎么办
作者: 清秋    时间: 2011-11-22 23:03
返回个负数。只是代表没找到该数而已。
作者: 冯敏    时间: 2011-11-22 23:57
二分查找是在有序表中高速查找的算法:
    如果查找成功,则返回其所在下标,如果没有找到则返回-1
作者: 张冬冬    时间: 2011-11-23 00:52
同学你理解错了,正如你举的例子,找3没有,如果返回1的话,就说明找的是1号位置对应的4,而就不是你找的3了.
二分法,是查找中一种高效的查找方式,比普通的查找效率高,二分法查找查找的是数组元素所在的角标也就是arr[i]中i 的值,
数组元素的角标是从0开始到arr.length-1结束的有序数字,所以只有返回数组角标中没有的数字才能反映没有找到,所以返回-1,当然你随便返回一个负数也是可以的.
作者: moonlight    时间: 2011-11-23 08:18
负数就是代表你没有找到你所要查找的数据,这个可以说是一个规则吧,记住它。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2