Проблема с Heapsort в python

#python

Вопрос:

У меня есть некоторые проблемы с моим кодом кучи, код при выполнении на 1-м месте устанавливает наибольшее число вместо того, чтобы ставить его девочкой. Вот код

 class heap(object):
    def __init__(self, arr = None):
        self.counter = 0
        if (arr == None):
            self.arr = [0]*100
        else:
            self.arr = arr
        self.count = len(self.arr)-1  
           
    def Sort(self):
        self.counter = 0
        for _ in range(self.count):
            self.counter  = 1
            self.FixFromBelow()
        for _ in range(self.count):
            self.RemoveFromHeap()

    
    def FixFromBelow(self):
        walker = self.counter
        while walker >0 and self.arr[walker] > self.arr[walker//2]:
            self.arr[walker], self.arr[walker//2] = self.arr[walker//2], self.arr[walker]
            walker //=2

    def FixFromAbove(self):
        walker = 1
        while True:
            the_greatest = walker
            if(2*walker <= self.counter and self.arr[2*walker]>self.arr[the_greatest]):
                the_greatest = 2*walker
            if(2*walker 1 <= self.counter and self.arr[2*walker 1]>self.arr[the_greatest]):
                the_greatest = 2*walker 1
            if(the_greatest == walker):
                break
            self.arr[walker], self.arr[the_greatest] = self.arr[the_greatest], self.arr[walker]
            walker = the_greatest
            
            
            
        
    def AddToHeap(self,num):
        self.counter  =1
        self.arr[self.counter]=num
        self.FixFromBelow()
        
    def RemoveFromHeap(self):
        self.arr[1], self.arr[self.counter] = self.arr[self.counter], self.arr[1]
        self.counter -=1
        self.FixFromAbove()
        return self.arr[self.counter   1]
 

До

 2, 16, 16, 18, 10, 17, 6, 9, 14, 8, 1, 17, 1, 18, 18, 
 

И после выполнения кода

 18, 1, 1, 2, 6, 8, 9, 10, 14, 16, 16, 17, 17, 18, 18,
 

Комментарии:

1. Когда вы запускаете это с помощью отладчика, что первое , что он делает неправильно?