堆排序:
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)。