Если бы вы организовывали книги в библиотеке, как бы вы хранили их и какую структуру данных вы бы использовали? " - PullRequest
0 голосов
/ 15 июля 2009

Я бы использовал хеш-таблицу и использовал номер ISBN в качестве ключа. Поскольку это даст мне время поиска O (1) .... так как среднее время поиска в хэш-таблице равно O (1) ....

мы также можем использовать двоичное дерево поиска ..... время поиска равно O (nlogn) ...

Какую структуру данных вы, ребята, используете и почему?

Ответы [ 2 ]

5 голосов
/ 15 июля 2009

Звучит как домашнее задание или вопрос на собеседовании. Если бы я спрашивал об этом, мне было бы интересно не только понять, понимаете ли вы пару структур данных. Я также хотел бы знать, как вы анализируете реальную проблему и переводите ее в мир компьютеров и структур данных.

Таким образом, вам следует подумать о том, какие операции необходимо выполнить с данными, прежде чем выбрать структуру данных. Вам также следует подумать о реальных библиотеках и о некоторых «ошибках», которые могут предложить любую выбранную вами структуру данных.

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

Но действительно ли поиск в ISBN является важным вариантом использования? Я все время пользуюсь своей местной библиотекой и никогда не ищу книги ISBN. Вот некоторые вещи, которые я делаю:

  • Поиск конкретной книги по названию. Иногда встречаются разные книги с одинаковым названием.
  • Просмотр списка книг автора, который мне нравится
  • Найдите, где находятся книги по определенному предмету, чтобы я мог просматривать их.

Библиотекари, вероятно, имеют дополнительное использование для системы каталогов:

  • Добавление новых книг в каталог
  • Пометить книги как проверенные
  • Изменение информации о списках, например, предметной классификации, для книги

Поэтому я полагаю, что я бы порекомендовал более тщательно подумать о том, какую проблему вы хотите решить, прежде чем принять решение о решении.

Извиняюсь за то, что задал больше вопросов вместо того, чтобы дать ответ. Я надеюсь, что это все равно полезно.

0 голосов
/ 15 июля 2009

Ну ... Я не думаю, что самая сложная проблема, которую необходимо решить при разработке структуры данных для хранения информации о книгах, - это скорость поиска.

И я, конечно, не согласился бы на систему, которая позволяла бы искать, только если вы знаете ISBN. Что если вы помните только автора или несколько слов из названия? На мой взгляд, если вы хотите получить какую-либо выгоду от компьютеризированной системы, вы должны поддерживать гибкий поиск.

Я бы, вероятно, хотел бы использовать Dublin Core , но я совсем не уверен, что это "правильный" поступок. Похоже, что люди потратили много времени на размышления об этом.

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