Сортировка книг - Поиск связанных вопросов - PullRequest
4 голосов
/ 14 апреля 2011

Мне недавно задали вопрос в техническом интервью, который звучит так:

Вы должны найти определенную книгу в библиотеке, и в тот момент, когда вы вошли внутрь, вы увидели, что все книги разбросаны по всей библиотеке, то есть книги не расположены организованным образом внутри библиотеки. Как вы будете искать эту конкретную книгу? Там нет спецификации о книге, за исключением того, что вы знаете Name of the Book.

Я знаю, что это связано с некоторым алгоритмом поиска, но какой алгоритм можно использовать для поиска книги в этом случае?

Ответы [ 2 ]

2 голосов
/ 14 апреля 2011

Выполняйте линейный поиск, начиная с первой книги и просматривая каждую книгу, пока не встретите первое вхождение нужной вам книги (конечно, может быть несколько копий).

Если вы являетесь единственным искателем, а книг много, то сортировка их перед поиском книги может показаться крайне неэффективной тратой времени - если только вы не собираетесь искать больше книг в будущем.

Вы всегда можете попросить библиотекаря сообщить вам, где находится книга в их системе, или вы можете пригласить нескольких друзей, чтобы помочь вам найти и разделить проблему и работать параллельно.

EDIT Существует также квантовый алгоритм под названием Алгоритм Гроверса (если вы занимаетесь такими вещами), который быстрее линейного поиска несортированной базы данных, но я не слишком много знаю об этом, чтобы честны.

0 голосов
/ 14 апреля 2011

В этом случае вы либо

  • отсортируйте книги и выполните поиск с помощью алгоритма поиска (например, бинарный поиск). Это хороший метод, если вам иногда приходится искать другую книгу
  • Поиск по книге, пройдя по всему списку книг, вы можете остановить, как только найдете ее
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...