std::vector<int> a;
int p;
int N;
// ...
p = a[ N>>1 ];
Что такое N>>1
?Что будет делать эта конструкция?
std::vector<int> a;
int p;
int N;
// ...
p = a[ N>>1 ];
Что такое N>>1
?Что будет делать эта конструкция?
Разделяет N на 2 (с помощью смещения бита справа 1) и используя это как индекс в вектор a для назначения p.
Следует, наверное, упомянуть, что лучше было бы (N/2). Это более читаемо и правильно. – GManNickG
Похоже, он устанавливает p
в средний элемент a
. если a
отсортирован, это будет медианный элемент и может быть частью алгоритма бинарного поиска.
Это неверно, если N не равно длине a. N >> 1 является эквивалентом целочисленного деления на два. –
Да, я предположил, что 'N' было числом элементов в' a', что довольно стандартно в контексте математической и O() нотации. –
Для получения точного ответа нам потребуется дополнительная информация. Как p и объявлено? – Skurmedel
Это зависит от того, какие p и a являются векторами _of_ – kdt
@kdt: Действительно. 'a' должен содержать что-то, что может быть присвоено' p', если так я собираю 'a' - вектор векторов, если' p' сам является вектором. Но это всего лишь предположение. – Skurmedel