二分查找法注意事项 喜欢ヅ旅行 2022-06-15 04:58 203阅读 0赞 使用二分查找,必须要满足: 存储在数组中(不可以是链表); 有序排列 public class BinarySearch{ public static int BinarySearch(int [] list , int key ){ int low = 0,high = list.length -1; while( low <= high ){ // 1 int mid = low + ((high - low) / 2) ; //2 if(key<list[mid]) high = mid - 1; //3 else if(key==list[mid]) return mid; else low = mid + 1; } return - low -1; //4 } } 要值得留意的4点: 1、如果low<=high 换成low<high,则查找可能会漏掉匹配元素,如当数组只有一个元素的时候。 2、这应该是一个优化措施吧,采用(low+high)/2存在溢出的风险,我们知道int是16位,最大的值为65535,假设你定义的数组是60000,low和high分别为30000,40000,两者相加就会溢出,变成一个负数,而采用上面的代码,则不会发生这样的错误。其实我们在很多时候都应该留意一下溢出问题,毕竟计算机里的加减乘除是收到限制的。 3、最近做的一道题目说如果把high = mid - 1换成high = mid可不可以,答案是不可以: 考虑数组\{2,4,6,8\}如果查找一个不再数组中的值1,则会出现死循环。 4、这也应该是一个优化措施,当没有找到要查找的关键字时,-(-low-1)就是一个插入点,这个位置插入关键字可以保持序列的有序性。 解释:首先明确一下,一定要返回一个负值,表示关键值不在序列里面。 但可不可以返回-low? 答:不可以,如果关键字小于low\[0\],那么-0也是0,这表明关键字与list\[0\]匹配。 所以一个好的选择是返回-low-1,不仅说明了关键字不在序列,也指出了它应该插在哪个位置。 还有一点就是要留意序列是递增还是递减,在前面加一个if判断。 网上有好多关于二分查找的资料,但来不及总结,它的用法和一些扩展,待遇到后在说吧,学无止境..
相关 二分查找法 前提是在已经排好序的数组中,通过将待查找的元素与中间的索引值对应的元素进行比较,若大于中间索引值对应的元素,去右半部分查找,否则,去左半部分查找。以此类推,直到找到为止;找不到 野性酷女/ 2024年01月01日 06:49/ 0 赞/ 345 阅读
相关 二分查找法 理解二分查找 二分查找,在一组有序数中查找你想要的找到的数值。比如在数组arr\[10\] = \{1,2,3,4,5,6,7,8,9,10\},中查找一个数字7。 电玩女神/ 2023年10月08日 14:16/ 0 赞/ 79 阅读
相关 二分查找法 想使用二分查找法,前提是这个数列需要是有序的 template<typename T> int binarySearch(T arr[],int n, T t 柔光的暖阳◎/ 2022年10月21日 03:49/ 0 赞/ 191 阅读
相关 二分查找法 算法描述 折半的思想去定位要查找的元素 步骤: 1. 前提:有已排序数组 A(假设已经做好) 2. 定义左边界 L、右边界 R,确定搜索范围,循环执行二分查找(3、 红太狼/ 2022年09月14日 09:58/ 0 赞/ 221 阅读
相关 二分查找法 package com.wdl.day07; / @创建人 wdl @创建时间 2021/8/9 @描述 / public class 小鱼儿/ 2022年09月04日 01:45/ 0 赞/ 48 阅读
相关 二分查找法注意事项 使用二分查找,必须要满足: 存储在数组中(不可以是链表); 有序排列 public class BinarySearch{ 喜欢ヅ旅行/ 2022年06月15日 04:58/ 0 赞/ 204 阅读
相关 算法 二分查找的变种以及注意事项 二分查找 普通的二分查找 public static int bSearch(int[] array, int num) { int low = 女爷i/ 2022年06月09日 09:38/ 0 赞/ 212 阅读
相关 二分查找法 二分查找法,所需查找次数最高为logn,以2为底 def binary_search(list, item): low and high keep tr 心已赠人/ 2022年05月18日 00:41/ 0 赞/ 227 阅读
相关 二分查找法 最基本的二分查找法、不考虑数组有重复数据、匹配到返回具体元素、没有返回-1 public class TestBinary { public int 淡淡的烟草味﹌/ 2022年02月27日 09:24/ 0 赞/ 318 阅读
相关 二分查找的实现及注意事项 听到二分查找,大家可能都会觉得它非常简单,从而会自然而然地忽略它。那么在实现这个看似简单的算法过程中有没有什么值得注意的地方呢? 下面是我写的一个二分查找的实现 i 阳光穿透心脏的1/2处/ 2021年09月19日 23:00/ 0 赞/ 360 阅读
还没有评论,来说两句吧...