<< | к задаче | главная | печатать | обсудить(0 сообщений) >>
Задача: Вездесущий двоичный поиск...
Исходник: Двоичный поиск, исходная версия: возвращение произвольного вхождения [C#, code #5, hits: 4258, рейтинг: 3/7,4.8(2209)] +
автор: this [добавлен: 10.05.2002] управление:
  1. class BaseBSearch
  2. {
  3. static public int Go(int[] x, int n, int t)
  4. {
  5. int l = 0, u = n - 1, p = 0, m = 0;
  6.  
  7. while (true) {
  8. if (l > u) {
  9. p = -1;
  10. break;
  11. }
  12. m = (l + u) /2;
  13.  
  14. if (x[m] < t) {
  15. l = m + 1;
  16. } else if (x[m] == t) {
  17. p = m;
  18. break;
  19. } else if (x[m] > t) {
  20. u = m - 1;
  21. }
  22. }
  23. return p;
  24. }
  25. }
Реализация базовой, неоптимизированной версии двоичного поиска.
В отсортированном массиве ищет элемент за не более чем log2n проходов, где n - длинна массива.
Если искомых элементов в массиве несколько - возвращается произвольный из них.

+добавить реализацию
 
каталог | задачи | паттерны | исходники | стат | форумы | карта сайта | контакты | ссылки 
© 2000-2018 CodeLAB Group
  Все права защищены
Страница сгенерирована за 0.003896 секунд
Количество запросов к БД: 9, gzip: 3.1kb/9.4kb(68%)