2010-01-17 61 views
2
std::vector<int> a; 
int p; 
int N; 

// ... 

p = a[ N>>1 ]; 

什麼是N>>1的一部分?這種結構會做什麼?

+0

我們需要獲取更多信息才能獲得準確答案。 p和a是如何聲明的? – Skurmedel 2010-01-17 23:35:14

+0

這取決於p和a是什麼向量_of_ – kdt 2010-01-17 23:35:37

+0

@kdt:確實。 'a'必須包含可以分配給'p'的東西,如果是這樣的話,我收集'a'是一個向量向量,如果'p'本身就是一個向量。但這只是一個猜測。 – Skurmedel 2010-01-17 23:37:38

回答

6

將N除以2(右移位右移1)並將其用作向量a中的索引以分配p。

+3

它應該更好地提到會是(N/2)。它更具可讀性和正確性。 – GManNickG 2010-01-17 23:42:26

1

它看起來像它將p設置爲a的中間元素。如果a已排序,則它將是中值元素,並且可以是二分搜索算法的一部分。

+0

這是不正確的,除非N等於a的長度。 N >> 1等於整數除以二。 – 2010-01-17 23:41:46

+0

是的,我認爲'N'是'a'中元素的數量,這在數學和O()表示語境中是非常標準的。 – 2010-01-17 23:50:21