Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Data structures 提取最小运行时间是什么?为什么?_Data Structures_Heap_Extract - Fatal编程技术网

Data structures 提取最小运行时间是什么?为什么?

Data structures 提取最小运行时间是什么?为什么?,data-structures,heap,extract,Data Structures,Heap,Extract,为什么在堆中提取分钟数需要O(lg n)?请参见: 简单地说,您可以执行三个步骤: 首先,用最后一级的最后一个元素替换堆的根。这是为O(1)做的 第二,将新根与其子级进行比较(仍然是O(1))。如果一切顺利,你就完了 现在很棘手。如果新根更大(我们认为你有一个最小的顶部)比它的一个孩子,交换他们!现在,您(可能)在孩子的子树中也遇到了同样的问题。继续,在子树内重复步骤2和3!您将不必须重复此操作的次数超过树中的级别计数,因为每次您向下移动一个级别。平衡二叉树中有O(lgn)级。注意:如果你的根

为什么在堆中提取分钟数需要O(lg n)?

请参见:

简单地说,您可以执行三个步骤:

  • 首先,用最后一级的最后一个元素替换堆的根。这是为O(1)做的
  • 第二,将新根与其子级进行比较(仍然是O(1))。如果一切顺利,你就完了
  • 现在很棘手。如果新根更大(我们认为你有一个最小的顶部)比它的一个孩子,交换他们!现在,您(可能)在孩子的子树中也遇到了同样的问题。继续,在子树内重复步骤2和3!您将必须重复此操作的次数超过树中的级别计数,因为每次您向下移动一个级别。平衡二叉树中有O(lgn)级。注意:如果你的根比它的两个子项都大,那么换一个较小的(你想把它调大)

解释过,如果你知道了,请告诉我你可以理解二叉树的高度(级别数)是O(lg N):在树的第一级,你有1个元素,在第二级,你有2个,在第三级,4个,然后8个,16个,依此类推,要在树中保留31个元素,你需要5层,要保留63个元素,你需要6层,要保持127,你需要7。它是可观察的=)