mir den binären Heap nach einem Online-Kurs Implementierung und ich habe folgend getan:eine binäre Heap-Implementierung gibt falsches Ergebnis zu schaffen
from __future__ import division
class BinaryHeap(object):
def __init__(self, arr=None):
self.heap = []
def insert(self, item):
self.heap.append(item)
self.__swim(len(self.heap) - 1)
def __swim(self, index):
parent_index = (index - 1) // 2
while index > 0 and self.heap[parent_index] < self.heap[index]:
self.heap[parent_index], self.heap[index] = self.heap[index], self.heap[parent_index]
index = parent_index
Nun, ich benutze es als:
s = 'SORTEXAMPLE'
a = BinaryHeap()
for c in s:
a.insert(c)
Jetzt danach wird der Haufen bestellt als:
['S', 'T', 'X', 'P', 'L', 'R', 'A', 'M', 'O', 'E', 'E']
statt
['X', 'T', 'S', 'P', 'L', 'R', 'A', 'M', 'O', 'E', 'E']
So scheint es, einer der letzten Austausch nicht passiert ist und ich dachte, ich hätte die Indexierung vermasselt, aber ich konnte keine offensichtlichen Probleme finden.
Sorry, ich hatte die falsche Saite. Ich habe es gerade geändert. – Luca