在二分搜索算法
中,
总的来说
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/