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

// ... 

p = a[ N>>1 ]; 

Что такое N>>1?Что будет делать эта конструкция?

+0

Для получения точного ответа нам потребуется дополнительная информация. Как p и объявлено? – Skurmedel

+0

Это зависит от того, какие p и a являются векторами _of_ – kdt

+0

@kdt: Действительно. 'a' должен содержать что-то, что может быть присвоено' p', если так я собираю 'a' - вектор векторов, если' p' сам является вектором. Но это всего лишь предположение. – Skurmedel

ответ

6

Разделяет N на 2 (с помощью смещения бита справа 1) и используя это как индекс в вектор a для назначения p.

+3

Следует, наверное, упомянуть, что лучше было бы (N/2). Это более читаемо и правильно. – GManNickG

1

Похоже, он устанавливает p в средний элемент a. если a отсортирован, это будет медианный элемент и может быть частью алгоритма бинарного поиска.

+0

Это неверно, если N не равно длине a. N >> 1 является эквивалентом целочисленного деления на два. –

+0

Да, я предположил, что 'N' было числом элементов в' a', что довольно стандартно в контексте математической и O() нотации. –

Смежные вопросы