Pyhton - Sortieralgorithmus?


06.04.2021, 17:28

So, habs jetzt mit euere Hilfe geschafft, Danke!

7 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Wenn ihr die sort(...)-Funktion nicht nutzen dürft, dann sollt ihr sicher auch keine äquivalenten Funktionen aus der Standardbibliothek nutzen, sondern ein Sortierverfahren selbst implementieren.

Dann würde ich versuchen, einen der folgenden Algorithmen umzusetzen ...

  1. https://de.wikipedia.org/wiki/Selectionsort
  2. https://de.wikipedia.org/wiki/Insertionsort
  3. https://de.wikipedia.org/wiki/Bubblesort
  4. https://de.wikipedia.org/wiki/Mergesort

Die obigen sind einfacher umzusetzen, die unteren sind komplizierter, aber performanter, was bei sechs Zahlen aber reichlich egal ist.

Es gibt ein paar sehr simple sortieralgorithmen mit denen du die Zeichen folge relativ leicht sortieren kannst. (ich vermute jetzt mal du hast die 6 zahlen in einer Liste)

Ein simpler Weg wäre es aus der Liste das kleinste Element rauszuholen dies in einer neuen Liste einzufügen und in der Alten Liste zu löschen, das machst so lange bis in der Alten Liste keine Elemente mehr sind.

Woher ich das weiß:Hobby – Ich interessiere mich für das programmieren und Informatik

Na ja, da gibt es viele Möglichkeiten - je nachdem, wie einfach du es haben willst. Habt ihr Vorgaben bekommen?

Informier dich doch über Sortieralgorithmen wie z.B. MergeSort

Kwalliteht  05.03.2022, 20:22

MergeSort für nur 6 Elemente ist Kanonen auf Spatzen.

0
xxxcyberxxx  06.03.2022, 00:54
@Kwalliteht

Die Antwort ist zwar fast ein Jahr alt, aber ja. Mergesort ist vielleicht etwas übertrieben für 6 Zahlen, aber dennoch eine Möglichkeit - die man auf jeden Fall kennen muss

0
Kwalliteht  06.03.2022, 02:14
@xxxcyberxxx

Hier tauchen immer wieder uralte Threads ganz oben auf. Und wenn man nicht aufpasst, gibt man eben eine Antwort, die sich eigentlich schon längst erledigt hat.

0

Bei nur 6 Zahlen geht das ganz einfach:

Du vergleichst die erste mit der zweiten Zahl. Ist die zweite Zahl kleiner als die erste, tauschen sie die Plätze. Dann das gleiche mit der zweiten und dritten Zahl und so weiter bis zur fünften und sechsten Zahl.
Das ganze wiederholst Du so oft, bis es bei einem Durchlauf keine Vertauschungen mehr gibt.

Eine Variante davon ist es, das kleinste Element der Liste mit dem ersten zu vertauschen, dann das kleinste Element der verbleibenden Liste mit dem zweiten vertauschen. Besteht die verbleibende Liste aus nur einem Element, ist die Sortierung beendet.

Diese Methoden sind die einfachsten Sortiermethoden, allerdings ist sie statistisch unübertroffen lahm.
Der Vorteil ist, dass sie kaum Speicherplatz benötigt und simpel zu programmieren ist. Hat man nur eine Handvoll Elemente zu sortieren, kann man das in ein paar Minuten schreiben.

Die zweite Methode kann man ein wenig verbessern, indem man das größte und das kleinste Element sucht, das kleinste mit dem ersten Eintrag tauscht und das größte mit dem letzten. Dann das gleiche mit den verbleibenden Elementen, bis die Zahl der verbleibenden Elemente <2 ist.

>>> l=[43,12,9,34,1,31]
>>> s=[]
>>> while(len(l)>0):
...     s.append(l.pop(l.index(min(l))))
...
>>> s
[1, 9, 12, 31, 34, 43]

Laufzeit ist hier O(n^2), was aber bei 6 Elementen egal ist.

Das ist eine sehr triviale Variante, die eigentlich einfach zu verstehen sein sollte.