您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

许多二分查找实现中的一个问题?

2025/11/11 3:30:08发布15次查看
我们知道二分搜索算法比线性搜索算法更好。该算法执行所需的时间为o(log n)。尽管大多数情况下,实现的代码存在一些问题。让我们来考虑一个二分搜索算法函数,如下所示 −
示例int binarysearch(int array[], int start, int end, int key){ if(start <= end){ int mid = (start + end) /2); //mid location of the list if(array[mid] == key) return mid; if(array[mid] > key) return binarysearch(array, start, mid-1, key); return binarysearch(array, mid+1, end, key); } return -1;}
这个算法在开始和结束达到一个较大的数之前都能正常工作。如果 (开始 + 结束) 超过了 232 - 1 的值,那么在包装后可能会返回一个负数。由于负数不支持作为数组索引,所以可能会引起一些问题。
为了解决这个问题,有几种不同的方法。
方法1int mid = start + ((end - start) / 2)
第二种方法只适用于java,因为c或c++没有>>>运算符。
方法2(仅适用于java)int mid = (start + end) >>> 1
由于c或c++不支持>>>,我们可以使用以下方法。
方法3int mid = ((unsigned int) low + (unsigned int) high) >> 1
以上就是许多二分查找实现中的一个问题?的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product