這恰好與15元素的數組:在C++中的二進制搜索與陣列
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
假設我們正在做一個元素的二進制搜索。通過檢查數組中的兩個或更少數字來指示將找到的任何元素。
我得到了:因爲我們正在進行二分搜索,因此只有一個比較結果發現的數字將是第7個元素= 7。對於兩個比較,這導致了數組的二次除法。也就是說,找到的數字可以是3或11.
我是否正確?
這恰好與15元素的數組:在C++中的二進制搜索與陣列
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
假設我們正在做一個元素的二進制搜索。通過檢查數組中的兩個或更少數字來指示將找到的任何元素。
我得到了:因爲我們正在進行二分搜索,因此只有一個比較結果發現的數字將是第7個元素= 7。對於兩個比較,這導致了數組的二次除法。也就是說,找到的數字可以是3或11.
我是否正確?
`我找到答案爲8是第七元件,發現其它元件是排序數組的第3.5和第10.5個元素。所以,接下來的兩個數字分別是4和11.
解釋我如何得到答案。
定的數組爲1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
head=1
tail=15
middle= 0+14/2=7th element **0 is the index value of 1 and 14 is of 15**
middle value turns to be 8 as it is the 7th element.
solving value for first half
head=1
tail=8
middle= 0+7/2=3.5 or 3rd element **0 is the index value of 1 and 7 is of 8**
middle value now turns to be 4 as it is the 3rd element.
solving value for second half
head=8
tail=15
middle= 7+14/2=10.5 or 10th element **7 is the index value of 8 and 14 is
of 15**
middle value now turns to be 11 as it is the 10th element of the array`
塊引用
關於如何得到答案的解釋對於其他用戶來說是很好的。 – ssoler
聲音對我來說,可能要添加一個假設,即在將一個偶數數組分割成一半時,您將使用2個可能數字中較小的一個來分割。 –
是的,這會引導你進行兩次比較,但是有時候數組不會被排序,你可能想要先訂購它。 – Overmachine
給定問題描述中的數組,它實際上是'4 8 12'。 – lcs