Ich bin aufgefordert, binäre Suche nach einer Liste von Namen und wenn diese Namen mit einem bestimmten Buchstaben beginnen, zum Beispiel A, dann soll ich diesen Namen drucken. Ich kann diese Aufgabe abschließen, indem viel einfacher Code zu tun wieWie führe ich eine binäre Suche nach Wörtern durch, die mit einem bestimmten Buchstaben beginnen?
for i in list:
if i[0] == "A":
print(i)
sondern ich gefragt werde, eine binäre Suche zu verwenden, und ich kämpfen, um den Prozess dahinter zu verstehen. Wir erhalten einen Basiscode, der die Position einer gegebenen Zeichenfolge ausgeben kann. Mein Problem ist nicht zu wissen, was so zu bearbeiten, dass ich das gewünschte Ergebnis
name_list = ["Adolphus of Helborne", "Aldric Foxe", "Amanita Maleficant", "Aphra the Vicious", "Arachne the Gruesome", "Astarte Hellebore", "Brutus the Gruesome", "Cain of Avernus"]
def bin_search(list, item):
low_b = 0
up_b = len(list) - 1
found = False
while low_b <= up_b and found == False:
midPos = ((low_b + up_b) // 2)
if list[midPos] < item:
low_b = midPos + 1
elif list[midPos] > item:
up_b = midPos - 1
else:
found = True
if found:
print("The name is at positon " + str(midPos))
return midPos
else:
print("The name was not in the list.")
Gewünschtes Ergebnis erzielen können
bin_search(name_list,"A")
Drucke alle Namen beginnend mit A (Adolphus von HelBorne, Aldric Foxe .... usw.)
EDIT: Ich war nur etwas raten und überprüfen und herausgefunden, wie es geht. Dies ist die Lösung Code
def bin_search(list, item):
low_b = 0
up_b = len(list) - 1
true_list = []
count = 100
while low_b <= up_b and count > 0:
midPos = ((low_b + up_b) // 2)
if list[midPos][0] == item:
true_list.append(list[midPos])
list.remove(list[midPos])
count -= 1
elif list[midPos] < item:
low_b = midPos + 1
count -= 1
else:
up_b = midPos - 1
count -= 1
print(true_list)
Erste, sortieren - [Sortier HOW TO] (https://docs.python.org/3/howto/sorting.html) – wwii
sorry ich haben sollte erwähnt, ist die Liste, die ich gebe, bereits sortiert, so dass wir diesen Teil überspringen können, aber ja, es muss sortiert werden – oneman
Suchen Sie nach binären Suche und studieren, wie es funktionieren soll, studieren Sie den Code, versuchen Sie herauszufinden, wie Es funktioniert, verwenden Sie print-Anweisungen, um mit * Visualisierung * zu helfen. – wwii