2013-07-29 73 views
4

這恰好與15元素的數組:在C++中的二進制搜索與陣列

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 

假設我們正在做一個元素的二進制搜索。通過檢查數組中的兩個或更少數字來指示將找到的任何元素。

我得到了:因爲我們正在進行二分搜索,因此只有一個比較結果發現的數字將是第7個元素= 7。對於兩個比較,這導致了數組的二次除法。也就是說,找到的數字可以是3或11.

我是否正確?

+0

聲音對我來說,可能要添加一個假設,即在將一個偶數數組分割成一半時,您將使用2個可能數字中較小的一個來分割。 –

+0

是的,這會引導你進行兩次比較,但是有時候數組不會被排序,你可能想要先訂購它。 – Overmachine

+1

給定問題描述中的數組,它實際上是'4 8 12'。 – lcs

回答

2

你幾乎是對的,第一個數字不是7而是8。

其餘2於是將4和12

正確答案將是4,8,12

+0

感謝大家的快速回復 – user2569893

+0

歡迎您 – vals

0

`我找到答案爲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` 

塊引用

+1

關於如何得到答案的解釋對於其他用戶來說是很好的。 – ssoler