class BinaryStringList():
def __init_(self):
self.item = []
def strAdd(self,item):
self.items.append(item)
def finditem(self, item):
if len(self)==0:
print("List is empty!")
else:
midpoint = len(self)//2
if self[midpoint]==item:
print("Item Found ", item)
else:
if item<self[midpoint]:
return finditem(self[:midpoint], item)
else:
return finditem(self[midpoint+1:], item)
Also wo ich finde ich habe ein Problem ist, wenn Sie versuchen, Elemente zur Liste hinzuzufügen. Wenn ich etwas wie:Binäre Suche und Listen
alist = BinaryStringList()
alist.strAdd("test1")
mein Code fehlschlägt, die Angabe hat kein Attribut. Nicht sicher, warum es scheitert, da ich fast genau den gleichen Code für ein anderes Programm habe, außer dass der Fund eine sequenzielle Suche verwendet, bei der es sich um eine binäre Suche handelt.
seine 'item' und Sie hinzufügen zu' Elemente '. Tippfehler. – zengr
Klasse SequentialStringList(): def __init __ (self): self.items = [] def strAdd (self, item): self.items.append (Artikel) def findItem (self, item): für Zeichenfolge in self.items: wenn Zeichenfolge == item: return Zeichenfolge return 'Keine' def iadd(): aList = SequentialStringList() für x im Bereich (20): aList .strAdd ("test" + str (x)) drucken (alist.findItem ("test19")) funktioniert gut. –
Randbemerkung: Wenn dies für eine Klasse ist, was auch immer, aber wenn Sie versuchen, dies für echten Code zu tun, sollte ich beachten, dass [das 'Halbierungs-Modul] (https://docs.python.org/ 3/library/bisect.html) ist der richtige Weg, die binäre Suche in Python zu machen. – ShadowRanger