Zahlen sortieren Python ohne sort Funktion?

1 Antwort

list[0] = list[1]

Mit dieser Zuweisung überschreibst du dir den alten Wert von list[0]. So dürfte deine Liste nach dem 1. Durchgang zweimal den Wert 40 beinhalten.

Der nächste Logikfehler ist der, dass du immer nur die ersten beiden Elemente bearbeitest. So werden nachfolgende Elemente aber nie sortiert.

Das kannst du dir im Übrigen ersparen:

0+counter


Genauso diesen Fall:

list[0] = list[0]


Prüfe entweder nur den Negativfall und erspare dir einen else-Block oder springe in diesem Block bereits mit continue weiter und spare dir danach erneut ein else (reduziere die Einrückung).

Um zu sortieren, gibt es viele verschiedene Ansätze. Zum Beispiel:

  • Du könntest dir ein Ankerelement (z.B. die Mitte) suchen und dann links und rechts davon durch die Liste iterieren. Jedesmal wird links und rechts ein Element gesucht, welches auf die andere Seite muss (das Ankerelement ist das Vergleichselement). Wenn auf beiden Seiten eines gefunden wurde, tauscht man diese miteinander. Findet sich auf einer Seite kein Element, wird mit dem Ankerelement getauscht.
  • Du iterierst über die Liste und suchst den größten/kleinsten Wert. Den setzt du an das Ende (oder den Anfang) der Liste. Der zu iterierende Bereich wird danach um 1 verringert, so lange, bis er 0 ist.
  • Du iterierst über die Liste und vergleichst pro Durchlauf das aktuelle Element mit dem nachfolgenden (dein derzeitiger Plan). Je nach dem, in welche Richtung du sortierst (absteigend / aufsteigend), werden die Elemente miteinander vertauscht. Nach einem kompletten Durchlauf verringerst du den Bereich um 1, denn das letzte / erste Element sollte ja nun feststehen.

Bananajoe2324 
Beitragsersteller
 14.01.2017, 14:31

Und wie würde ein Programm Deiner Meinung nach beim 3. Punkt aussehen?

Ich hab das nämlich gerade versucht so zu machen wie Du es mir beschrieben hast aber es funktioniert noch immer nicht...

0