[英]A query regarding the algorithm of binary search using C
在Binary Search Algorithm
,
一般來說
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 ;
但是我的老師告訴我, binary search
的標准算法是第一個算法,您寫的也是搜索算法,但它不是二進制搜索的算法。 他說的對嗎?
您的算法不正確:
case:list [1,2],searchElem = 2,low = 0,high = 1
中=(低+高)/ 2 =(0 + 1)/ 2 = 0
mid <searchElem設置低=更新中= 0,高= 1 [列表沒有變化]
因此您將陷入無限循環。
我想你把它弄錯了。
基本的Binary Search Algorithm
的工作流程:
Procedure binary_search
A ← sorted array
n ← size of array
x ← value to be searched
Set lowerBound = 1
Set upperBound = n
while x not found
if upperBound < lowerBound
EXIT: x does not exists.
set midPoint = lowerBound + ( upperBound - lowerBound ) / 2
if A[midPoint] < x
set lowerBound = midPoint + 1
if A[midPoint] > x
set upperBound = midPoint - 1
if A[midPoint] = x
EXIT: x found at location midPoint
end while
end procedure
在這里,您可以看到midPoint = lowerBound + ( upperBound - lowerBound ) / 2
, lowerBound = midPoint + 1
和upperBound = midPoint - 1
作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.