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的内部数据结构

  • HaspMap是使用 哈希表
  • 如果答案是“是”,那么它是否使用array base的实现 还是参考库的实现
  • 如果它使用数组基,那么它是排序的还是未排序的
  • 我正在做一个小项目,用Java演示HashMap和TreeMap之间所有操作(插入、删除、检索)的运行时复杂性,但我真的不知道如何将理论公式与运行程序的实际结果联系起来。例如,通过运行快速测试: 1.插入10000个元素 2.删除100个元素 3.检索100个元素

    我得到了以下信息:

         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²)。