В настоящее время у меня есть проблема, что я пытаюсь выяснить, но не уверен, что мои ответы верны.Hash Tables или BST?
У вас есть 1 миллион записей. В этих записях вам часто нужно искать по два критерия: идентификатор сотрудника и заработная плата (но не оба одновременно). У вас есть следующие ограничения:
каждая запись является очень большой и из-за того, что вы можете держать только одну копию этих данных.
Ваша программа должна быть достаточно быстрой. Простое сканирование всех элементов для каждого поиска будет слишком медленным.
Какая структура данных вы бы использовали?
Мой ответ?
Я хотел бы использовать хэш-таблицу, потому что в худшем случае будет O (+1000000) = O (1)
Как вы извлекаете записи при поиске по ID?
Как вы получите запись при поиске по зарплате?
Вам понадобится поиск по диапазону зарплаты? (например, «показать мне все зарплаты между $ 20 000 и $ 25 000» или аналогичные?) Если это так, вам нужно будет просмотреть всю хэш-таблицу (O (N)), так как только поиск в хэш-таблице O (1) работайте, если вы знаете точное ключевое значение (ы), которое вы ищете ... –
«Использовать хеш-таблицу» - это только начало ответа. Как вы собираетесь искать по двум ключам только с одной копией данных? Я думаю, что именно этот вопрос пытается исследовать ваши знания. Выбор между деревом и хеш-таблицей является вторичным, и вы можете использовать оба. Подумайте о недостающих деталях. Вам придется искать по целому ряду окладов - что реально - или конкретное значение в долларах - не так полезно? Разница имеет значение. – Gene
@JeremyFriesner хорошо для ID, я бы знал точное местоположение, я сначала сортирую идентификаторы, а затем использую хэш? но за зарплату у вас есть точка .... –