Performance 自下而上堆头与自上而下堆头(性能方面)
自下而上堆头和自上而下堆头之间的性能差异是什么 堆是一个二叉树;因此,我们知道它有logn深度,每个级别有2^i个节点。级别0(根)有1个节点,级别1有2个节点,级别2有4个节点,以此类推 现在想想你提到的两种方法: 对于自底向上,我们在底部插入节点,并让它们每次“冒泡”堆。相反,对于自顶向下,我们让节点“坠落”到其正确的位置。哪一个更有效 让我们想想最坏的情况: 自下而上,每个节点都可以上升到最高层。在级别1,这需要一次交换(在两个节点上);在级别2,这需要两个(在四个节点上)。。。一旦我们到达最后一级,我们必须进行logn交换(在相当大的n/2节点上)!这给了我们O(n logn)效率Performance 自下而上堆头与自上而下堆头(性能方面),performance,sorting,heapsort,Performance,Sorting,Heapsort,自下而上堆头和自上而下堆头之间的性能差异是什么 堆是一个二叉树;因此,我们知道它有logn深度,每个级别有2^i个节点。级别0(根)有1个节点,级别1有2个节点,级别2有4个节点,以此类推 现在想想你提到的两种方法: 对于自底向上,我们在底部插入节点,并让它们每次“冒泡”堆。相反,对于自顶向下,我们让节点“坠落”到其正确的位置。哪一个更有效 让我们想想最坏的情况: 自下而上,每个节点都可以上升到最高层。在级别1,这需要一次交换(在两个节点上);在级别2,这需要两个(在四个节点上)。。。一旦我们到
自上而下:在每个级别上,任何节点都可以落到树的底部(logn交换)。它与自下而上的区别在于,随着最大下落距离的增加,受其影响的潜在节点数量减少。级别0是唯一可以落在日志n中的节点,它只是一个节点(而不是自底向上的n/2)。因此,所有“下降”的总和为O(n),这是更有效的算法。欢迎使用堆栈溢出。这不是家庭作业完成服务。你的导师给了你作业,而不是我们,你需要做你自己的工作。如果我们为你做,你什么也学不到。如果你不能开始,向你的老师寻求帮助;他们被雇来教你。祝你好运,说真的?我只是问哪一个性能更好。你有吗?看看。