我正在閱讀CLRS並且在練習6.5-8時遇到了一些問題。證明使用min-heap合併k個排序列表的算法
舉一個爲O(n LG K)-time算法來合併ķ排序的列表爲一個 排序的列表,其中n是在所有的輸入 列表元素的總數。 (提示:使用對於k-方式合併一個min0heap。)
將溶液,如大家說,
1)使用k個列表的第一個元素構建的k元件最小堆,
2)提取分鐘()從堆中獲得最小的元素,並將它附加到結果列表中,
3)選擇下一個元件從同一列表,因爲我們只從提取的一個堆。將它插入堆並轉到2)。
我可以理解時間是O(n lg k),但是我沒有得到步驟3中選擇的正確性)。它似乎明顯,但是有一些正式的證據?
我認爲其複雜性將是O(k * n * lg k)。 –