<< | к задаче | главная | печатать | обсудить(0 сообщений) >>
Задача: Вездесущий двоичный поиск...
Исходник: Двоичный поиск, оптимизация основной версии: возращение первого вхождения [C++, code #190, hits: 8900, рейтинг: 3/7,4.94(2685)] +
автор: David [добавлен: 21.12.2006] управление:
  1. template<class T> int BSearch(T* v, int n, T& t)
  2. {
  3. int l = -1, u = n, m;
  4.  
  5. while(l+1 != u)
  6. {
  7. m = (l + u) >> 1;
  8. if(v[m] < t) l = m;
  9. else u = m;
  10. }
  11.  
  12. return (u >= n || v[u] != t) ? -1 : u;
  13. }
Небольшая оптимизация реализации основной версии двоичного поиска с возвратом первого вхождения.
Эффективнее ~20-30% (за счет использования операции сдвига >> для получения середины диапазона)

+добавить реализацию
 
каталог | задачи | паттерны | исходники | стат | форумы | карта сайта | контакты | ссылки 
© 2000-2017 CodeLAB Group
  Все права защищены
Страница сгенерирована за 0.005224 секунд
Количество запросов к БД: 8, gzip: 2.9kb/7.5kb(62%)