Witam, napisałe procedurę naprawy kopca, dla tablicy, której pierwszym indeksem jest 1
def heapify(a, l, r, i):
while True:
p = 2*i
if p > r: break
if a[p] < a[i]: m = p
else: m = i
if p+1 <= r:
p += 1
if a[p] < a[m]: m = p
if m == i: break
else:
a[i], a[m] = a[m], a[i]
i = m
a = [1, 2, 3, 4, 10, 6, 7, 8, 9, 10, 11, 12, 13, 14]
print a
heapify(a, 0, 13, 4)
print a
l - początek tablicu, r - koniec tablicy, i - element od którego mamy naprawiać. Procedura działa.
Natomiast gdy chciałem aby można również było przekazywać tablice o pierwszym indeksie 0 to procedura już nie przywraca porządku kopca. Może ktoś wie jak to rozwiązać? Zamiast p = i2 próbowałem p = i2+1 ale też nie dizała.
Pozdrawiam