1) 計數用k路合併排序排序號碼從0到N-1隨機置換所需的比較的數量。
2)
以計數由K-路所需的數據的移動的數目歸併排序號碼鄰排序隨機置換從0到N-1。
我明白雙向合併排序如何正常工作,並且很好地理解代碼。我現在的問題是我不知道如何開始,需要一點幫助。 我如何將2路合併排序轉換爲K-Way,以便我可以解決上述問題。
我已經搜索了一段時間,但無法找到任何教程來幫助我理解「k-way合併排序」。
我需要很好的解釋該怎麼做,以便我可以從那裏把它做到我自己。
就像我說的我理解2路,那麼我如何移動到K-way合併排序? 我如何實施K-way。
感謝您的幫助。
編輯
**我看了一些帖子 http://bchalk.com/work/view/k_way_merge_sort 是二叉堆必須被用來實現K-路合併。這是或那麼其他方式?
** 如何將我的列表分爲K?有沒有特殊的做法?
二叉堆對於k路合併不是必需的。所有你需要的是快速找到k項目列表中最小的一種方法,刪除該項目,並將另一項目放入列表中。二進制堆經常被使用,因爲它很容易實現並且對於小列表來說非常有效。但是您可以使用跳過列表或任何其他堆實現或其他優先級隊列實現。 –