幾乎有序的數組排序_python

堆排序: 

import heapq
def f(a,k):
    h = []
    for i in range(k):
        heapq.heappush(h,a[i])
    for i in range(len(a)):
        a[i]=heapq.heappop(h)
        if i+k<len(a):
            heapq.heappush(h, a[i+k])
    return a

a = [2,1,4,3,6,5,8,7,10,9]
print(f(a,3))

插入排序:就是正常的插入排序就行,只不過有了移動的距離不超過k 導致複雜度爲O(n*k)。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章