c - 关于使用C的二进制搜索算法的查询

标签 c algorithm binary-search

二分搜索算法中,

总的来说

if   mid_value > search_element we set high = mid_pos-1 ;
else mid_value < search_element we set  low = mid_pos+1 ;

但是我只是像这样修改了算法

if   mid_value > search_element we set high = mid_pos ;
else mid_value < search_element we set  low = mid_pos ;

但是我的老师告诉我,二分查找的标准算法是第一个,你写的也是一个查找算法,但它不是二分查找的算法。 他是对的吗?

最佳答案

您的算法不正确:

案例: 列表 [1, 2] , searchElem = 2 , low = 0,high = 1

中 = (低+高)/2 = (0+1)/2 = 0

mid < searchElem 设置低 = 中 更新了 mid = 0, high = 1 [列表没有改变]

所以你最终会陷入无限循环。

关于c - 关于使用C的二进制搜索算法的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53058133/

相关文章:

C with Bison+Flex 检查规则文件

sql-server - 索引纬度和经度 SQL Server 2008

arrays - 两个数组的元素相加

algorithm - 按前缀搜索多个单词(trie 数据结构)

c++ - 二维数组操作和二进制搜索的实现

将 C 中的十六进制 char[] 转换为 int[] 1 个字节中的 2 个字符

c - C中的反射支持

c - 如何编写涉及 Unicode 的 C 代码?

python - 使用递归的二分搜索进入无限循环

C++二进制搜索没有成功运行......永远