ich möchte ein Programm schreiben, welches eine bereits aufsteigend sortierte Liste und eine Zahl übergeben bekommt. Die Liste soll dann halbiert werden und die Zahl soll entweder in die linke oder rechte Hälfte eingefügt werden. Als Beispiel nehme ich jetzt einmal die Liste [1,2,3,4,5,6] und die Zahl 2. Das funktioniert mit meinem Code auch richtig und ich bekomme als Ausgabe: [1,2,2,3,4,5,6]
Code: Alles auswählen
def binaeres_einfügen(liste,zahl):
sort = liste
links = sort[0:len(sort)//2]
rechts = sort[len(sort)//2:]
if zahl <= max(links):
for i in range(len(links)):
if i < zahl <= i+1:
links.insert(i,zahl)
if zahl < min(links):
links.insert(0,zahl)
else:
for i in range(len(rechts)):
if i < zahl <= i+1:
rechts.insert(i,zahl)
sort = links + rechts
return sort
Das Problem ist jedoch, dass ich in die rechte Liste, also [4,5,6] keine Zahl einfügen kann. Wenn ich z.B. die 5 einfügen möchte, so gibt er mir die Anfangsliste wieder zurück. Habe ich da irgendwo einen Denkfehler?