Algorithm JFC和x27之间的时间复杂度;什么是HashMap和TreeMap?
据我了解,Algorithm JFC和x27之间的时间复杂度;什么是HashMap和TreeMap?,algorithm,Algorithm,据我了解, TreeMap : 1. Insert O( logN ) 2. Delete O( logN ) 3. Retrieve O( logN ) HashMap : 1. Insert O( 1 ) -> O( N ) 2. Delete O( 1 ) -> O( N ) 3. Retrieve O( 1 ) -> O( N ) 我知道树映射使用红黑树作为内部数据结构。但是,我不太确定HashMap的内部数据结构 HaspMap是使用 哈希表 如果答案是“是”,那么
TreeMap :
1. Insert O( logN )
2. Delete O( logN )
3. Retrieve O( logN )
HashMap :
1. Insert O( 1 ) -> O( N )
2. Delete O( 1 ) -> O( N )
3. Retrieve O( 1 ) -> O( N )
我知道树映射使用红黑树作为内部数据结构。但是,我不太确定HashMap的内部数据结构
HashMap
Create time : 6348015 nano seconds.
Remove time : 98458 nano seconds.
Retrieve Found time : 59762 nano seconds.
Retrieve Not Found time : 39097 nano seconds.
--- end ---
TreeMap
Create time : 20518163 nano seconds.
Remove time : 274221 nano seconds.
Retrieve Found time : 112072 nano seconds.
Retrieve Not Found time : 168442 nano seconds.
--- end ---
我想知道我如何找到这些时间与理论时间复杂性的联系,比如O(N)或O(logN)?
这个结果让我很惊讶,因为我一直认为TreeMap会比HashMap差很多。有人能给我简单解释一下这些事情吗?提前感谢。我在youtube上看过视频,通过动画和图表解释了不同的排序算法。还请注意,大Oh是最坏情况下的运行时间,因此您可能需要对其进行装配,以便命中最坏情况以突出显示差异
我认为一个简单的图表最好,时间在y轴上,元素数量在x轴上。如果你想显示某些操作的复杂性,你不能只使用一个数据点,你必须显示时间在
N
变化时是如何变化的
此外,对于较小的数据集,理论复杂度较高的算法或数据结构的运行时间通常较短
另一件需要考虑的事情是要有代表性的价值观。例如,如果在RB树中插入值
1,2,3,…
,这是最坏的情况(我认为),因为它必须经常重新平衡。插入随机值可能会得到不同的结果。大O表示法不一定意味着最坏的情况。@svick:事实上是这样的(除非你谈论的是一个越多越好的上下文,在这种情况下,它将是最好的情况)。O描述上界,Ω描述下界,Θ描述两者。是的,它描述上界,但这并不意味着它总是描述最坏的情况。例如,快速排序在平均情况下是O(n logn),但最坏情况是O(n²)。