2017-07-07 33 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