2013-02-27 57 views
0

我有一個完全排序的二維數組。下面的陣列例子二維陣列上的二進制搜索

1 2 3 
    5 6 7 
    9 10 11 

1 2 3 4 5 
    6 7 8 9 10 

我想用這些陣列上二進制搜索。讓rows是行數和成爲cols

最初start = 0end = rows * cols -1

在上面的3×3陣列的數量,中點工程以有四個[9個元素。現在我該如何找出中點對應的行和列?有沒有任何標準公式?

回答

6

的公式是非常簡單的:

row = number/cols_per_row; 
col = number%cols_per_row; 
+0

嗯..只是好奇,你是怎麼想到的? – vinoth 2013-02-27 10:09:15

+1

對於每一個cols_per_row數字,你走一排。所以這解釋了爲什麼使用這個公式找到第一個數字,對嗎?至於第二個 - 你所在的列是循環重複每個cols_per_row數字,所以'%'描述了這樣的行爲,對吧? – 2013-02-27 10:12:03

+0

什麼是'cols_per_row'? – 2013-02-27 10:16:25

1

size = rows * cols

mid = size // 2(整數除法)

row = mid // cols

col = mid % cols(其餘爲整數除法)