目前我有一个问题,我想弄清楚,但不知道我的答案是否正确。哈希表或BST?
您有100万条记录。在这些记录中,您经常需要通过 两个标准进行搜索:员工ID和薪水(但不能同时进行)。 您有以下限制:
每个记录是非常大的,因为你只能保持这个数据的一个副本。
您的程序需要相当快。只需扫描每个搜索的所有项目就会太慢。
你会用什么数据结构?
我的回答是?
我会使用Hash表,因为最坏的情况下,时间是O(1000000)= O(1)
你将如何检索记录,当你通过ID搜索?
当您按工资搜索时,您如何检索记录?
你会不会需要按薪水范围搜索? (例如,“向我显示所有薪水介于$ 20,000和$ 25,000之间”或类似的内容?)如果是这样,您需要扫描整个哈希表(O(N))才能执行此操作,因为仅哈希表的O(1)查找如果您知道您正在寻找的确切关键值,请致电... –
“使用散列表”只是答案的开始。你将如何在只有一个数据副本的情况下搜索两个密钥?我认为这就是要探究你的知识的问题。树和散列表之间的选择是次要的,你可以同时使用两者。想想失去的细节。您是否需要通过一系列薪酬进行搜索 - 这是现实的 - 还是一个特定的美元价值 - 不是很有用?差异很重要。 – Gene
@JeremyFriesner很好的ID我知道确切的位置是我先排序的ID然后使用哈希?但对于薪水你有一个点.... –