2017-07-07 274 views

回答

0

InsertExtract-Min操作的运行时间都是O(log n)。有n任务,每个任务必须插入到堆中,然后从堆中提取,导致运行时间为O(n log n)

Insert的运行时间为O(log n)的原因是插入时我们先将新任务添加到堆的最终位置。这并不一定保持heap property,因为新任务的优先级可能比其父级的优先级更高(具有更小的密钥)。这就是为什么Insert操作涉及Heapify-Up procedure,其目的是恢复堆顺序。 Heapify-Up程序的运行时间为O(log n)

原因Extract-MinO(log n)运行时间是在Extract-Min操作,我们先删除堆的根(第一个任务),然后最后一个任务移动到第一位置(即与更换根任务位于最后的位置)。由于这可能违反堆属性,因此Extract-Min涉及执行Heapify-Down procedureHeapify-Down程序的运行时间也为O(log n)

+1

插入要求您在堆的末尾添加新项目并将其向上移动。删除用最后一个项目替换根目录,并将其移到堆上。这两种操作都不需要您链接到的完整堆积程序。 –

+0

@JimMischel,感谢您的评论。我相应地编辑了我的答案。 – snakile