一个好的解决方案是对于k-sorted数组(每个元素距其目标位置最多为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[1, 2, 0, 3]
。 - Vincent van der Weele