很好的解決排序的k排序陣列(每個元素是至多爲k從其目標位置離開)是,排序K-排序陣列具有最小堆
1) Create a Min Heap of size k+1 with first k+1 elements. This will take O(k) time.
2) One by one remove min element from heap, put it in result array, and add a new element to heap from remaining elements.
overall complexity will be O(k) + O((n-k)*logK)
我無法理解的相關性的數組進行k分類以使用堆技術。即使數組沒有進行k分類,這種方式是否還能工作?
'[1,2,3,0]',k = 2 – leventov
爲了完整性,上面的算法用@ leventov的例子得到'[1,2,0,3]'。 –