目前我有一個問題,我想弄清楚,但不知道我的答案是否正確。哈希表或BST?
您有100萬條記錄。在這些記錄中,您經常需要通過 兩個標準進行搜索:員工ID和薪水(但不能同時進行)。 您有以下限制:
每個記錄是非常大的,因爲你只能保持這個數據的一個副本。
您的程序需要相當快。只需掃描每個搜索的所有項目就會太慢。
你會用什麼數據結構?
我的回答是?
我會使用Hash表,因爲最壞的情況下,時間是O(1000000)= O(1)
你將如何檢索記錄,當你通過ID搜索?
當您按工資搜索時,您如何檢索記錄?
你會不會需要按薪水範圍搜索? (例如,「向我顯示所有薪水介於$ 20,000和$ 25,000之間」或類似的內容?)如果是這樣,您需要掃描整個哈希表(O(N))才能執行此操作,因爲僅哈希表的O(1)查找如果您知道您正在尋找的確切關鍵值,請致電... –
「使用散列表」只是答案的開始。你將如何在只有一個數據副本的情況下搜索兩個密鑰?我認爲這就是要探究你的知識的問題。樹和散列表之間的選擇是次要的,你可以同時使用兩者。想想失去的細節。您是否需要通過一系列薪酬進行搜索 - 這是現實的 - 還是一個特定的美元價值 - 不是很有用?差異很重要。 – Gene
@JeremyFriesner很好的ID我知道確切的位置是我先排序的ID然後使用哈希?但對於薪水你有一個點.... –