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