我正在研究哈希表,想到了一个问题:为什么不用字典来搜索元素,而先将列表排序再进行二分搜索呢?(假设我要多次搜索)
我们可以在O(n)时间内将列表转换为字典(我认为),因为我们必须遍历所有元素。我们将所有这些元素添加到字典中,这需要O(1)的时间。当字典准备好后,我们就可以在O(1)的时间(平均值)内搜索任何元素,最坏情况是O(n)。
如果我们谈论平均情况,O(n)比其他排序算法更好,因为它们最好需要O(nlogn)。如果我对我所说的一切正确,那么为什么不这样做呢?
我知道还有其他各种可以使用排序元素但不能在未排序的字典或数组中完成的事情。但如果我们只关注搜索,难道不是比其他排序算法更好的方法吗?
我们可以在O(n)时间内将列表转换为字典(我认为),因为我们必须遍历所有元素。我们将所有这些元素添加到字典中,这需要O(1)的时间。当字典准备好后,我们就可以在O(1)的时间(平均值)内搜索任何元素,最坏情况是O(n)。
如果我们谈论平均情况,O(n)比其他排序算法更好,因为它们最好需要O(nlogn)。如果我对我所说的一切正确,那么为什么不这样做呢?
我知道还有其他各种可以使用排序元素但不能在未排序的字典或数组中完成的事情。但如果我们只关注搜索,难道不是比其他排序算法更好的方法吗?
n*O(n)
,如果您首先进行排序,然后再进行n次搜索,则为n*O(logn)
。根据约翰理论,您可以在O(1)
时间内进行任意次数的搜索,这比您所说的要好得多。 - user5936276