Heap Sort · Nhóm: Sắp xếp
Sắp xếp vun đống (Heap Sort), nhóm Sắp xếp.
def heap_sort(a):
n = len(a)
for i in range(n // 2 - 1, -1, -1):
sift_down(a, n, i)
for i in range(n - 1, 0, -1):
a[0], a[i] = a[i], a[0]
sift_down(a, i, 0)
return a
def sift_down(a, n, parent):
while True:
child = 2 * parent + 1
if child + 1 < n and a[child + 1] > a[child]:
child += 1
if child < n and a[child] > a[parent]:
a[parent], a[child] = a[child], a[parent]
parent = child
else:
break
Mở trang để xem mô phỏng từng bước và xuất slide bài giảng.