[Python] SortierAlgorithmen

Dieses Thema im Forum "Projekte / Codes" wurde erstellt von Kritiker, 25. September 2007 .

Schlagworte:
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 25. September 2007
    Sortieren durch Einfügen

    ich habe im informatik-unterricht ein terminal-basiertes python-programm geschrieben, welches eine vorgegebene anzahl bzw. liste von zahlen sortiert. mir ist zwar bekannt, dass es dafür einen speziellen befehl gibt, aber das war nicht sinn der sache (thema: sortieralgorithmen).
    der algorithmus lässt die liste durch einfügen der zahlen sortieren. zusätzlich dazu werden alle vergleich- und tauschvorgänge protokolliert und am ende ausgegeben.

    das ist der fertige code:

    Code:
    # 14.09.07
    # in-1.1
    # Sortieren durch Vertauschen
    
    # Definition der Liste
    def Sortieren_durch_Vertauschen(lis):
     Liste=lis
     Laenge=len(Liste)
     
     print "::: Sortieren durch Vertauschen :::"
     print "Folgende Zahlen werden sortiert: ",Liste
     
     # Zaehler fuer Tauschvorgaenge ist auf 0 gesetzt
     Tausch=0
     
     # Zaehler fuer Vergleichvorgaenge ist auf 0 gesetzt
     Vergleich=0
     
     # Schleife fuer "feste_Position"
     for feste_Position in range (0,Laenge-1):
     
     # Schleife fuer "Position"
     for Position in range (feste_Position+1,Laenge):
     
     # Erhoehung des Zaehlers fuer Vergleichvorgaenge
     Vergleich=Vergleich+1
     
     # bedingte Anweisung; ist das Element der Liste an der Stelle "Position" kleiner
     # als das Element der Liste an der Stelle "feste_Position", so vertausche beide
     if Liste[Position]<Liste[feste_Position]:
     
     # Erhoehung des Zaehlers fuer Tauschvorgaenge
     Tausch=Tausch+1
     
     # Elemente werden vertauscht
     Liste[feste_Position],Liste[Position]=Liste[Position],Liste[feste_Position]
    
     # Ausgabe der getaetigten Vergleichvorgaenge wehrend der Laufzeit
     print "Anzahl der Vergleiche: ",Vergleich
     
     # Ausgabe der getaetigten Tauschvorgaenge waehrend der Laufzeit
     print "Anzahl der Tauschvorgaenge: ",Tausch
     return Liste
    
    
    # zu sortierende Liste
    liste=[168,65,1,567567,34,2222,20,90,5,1001,97]
    
    # Starten des Sortierverfahrens
    Liste=Sortieren_durch_Vertauschen(liste)
    
    # Ausgabe der sortierten Liste
    print "Die sortierte Liste lautet: ",Liste
    der quelltext darf frei verwendet bzw. verändert werden. ich würde mich über verbesserungsvorschläge sehr freuen, z.b. wie man es umsetzen kann, dass das programm eine vom benutzer eingegebene liste sortiert, anstelle der schon im programmtext vordefinierten liste.
     

  2. Anzeige
  3. #2 25. September 2007
    AW: Sortieren durch Einfügen

    Hi!

    Zum Beispiel:

    Code:
    eingabe = raw_input ("Bitte geben sie Zahlen getrennt durch ',' ein: ")
    liste = []
    for zahl in eingabe.split (","):
     try:
     liste += [int(zahl)]
     except:
     print "\"%s\" ist keine Zahl!" % (zahl)
    Mfg,

    Kolazomai
     
  4. #3 25. September 2007
    SortierAlgorithmen

    hier, ein weiteres programm zum thema sortieralgorithmen: hierbei handelt es sich um einen algorithmus, welcher die liste durch tauschvorgänge ordnet

    der quellcode:
    Code:
    # 14.09.07
    # in-1.1
    # Sortieren durch Vertauschen
    
    # Definition der Liste
    def Sortieren_durch_Vertauschen(lis):
     Liste=lis
     Laenge=len(Liste)
     
     print "::: Sortieren durch Vertauschen :::"
     print "Folgende Zahlen werden sortiert: ",Liste
     
     # Zaehler fuer Tauschvorgaenge ist auf 0 gesetzt
     Tausch=0
     
     # Zaehler fuer Vergleichvorgaenge ist auf 0 gesetzt
     Vergleich=0
     
     # Schleife fuer "feste_Position"
     for feste_Position in range (0,Laenge-1):
     
     # Schleife fuer "Position"
     for Position in range (feste_Position+1,Laenge):
     
     # Erhoehung des Zaehlers fuer Vergleichvorgaenge
     Vergleich=Vergleich+1
     
     # bedingte Anweisung; ist das Element der Liste an der Stelle "Position" kleiner
     # als das Element der Liste an der Stelle "feste_Position", so vertausche beide
     if Liste[Position]<Liste[feste_Position]:
     
     # Erhoehung des Zaehlers fuer Tauschvorgaenge
     Tausch=Tausch+1
     
     # Elemente werden vertauscht
     Liste[feste_Position],Liste[Position]=Liste[Position],Liste[feste_Position]
    
     # Ausgabe der getaetigten Vergleichvorgaenge wehrend der Laufzeit
     print "Anzahl der Vergleiche: ",Vergleich
     
     # Ausgabe der getaetigten Tauschvorgaenge waehrend der Laufzeit
     print "Anzahl der Tauschvorgaenge: ",Tausch
     return Liste
    
    
    # zu sortierende Liste
    liste=[168,65,1,567567,34,2222,20,90,5,1001,97]
    
    # Starten des Sortierverfahrens
    Liste=Sortieren_durch_Vertauschen(liste)
    
    # Ausgabe der sortierten Liste
    print "Die sortierte Liste lautet: ",Liste
    ich gestatte es jedem, sich des quelltextes zu bedienen und ihn nach eigenen vorstellungen zu verändern. tipps und anregungen bitte hier in den thread! ich bin neuling in sachen programmieren, python usw.

    mfg neger187
     
  5. #4 25. September 2007
    AW: SortierAlgorithmen

    ~Themen merged.~

    Bitte eroeffne nicht fuer jeden Algo, den du in der Schule coden musstest, ein neues Thema...
    Der Showcase ist hauptsaechlich dazu da, um nuetzliche funktionsreiche Programme zur Schau stellen zu koennen.

    Mfg,

    Kolazomai
     
  6. #5 25. September 2007
    AW: SortierAlgorithmen

    Das ist Selectionsort, oder? Sehr ineffektiver Algorithmus, weil O(n²)...
     
  7. #6 25. September 2007
    AW: SortierAlgorithmen

    die effektivität der algorithmen stand bei uns zuerst im hintergrund. es sollte einfach ein allgemeines verständnis dafür aufgebaut werden.
    in nächster zeit werden wir "Bubble Sort" und "Quick Sort" anwenden müssen.

    @Kolazomai:
    tut mir leid.
     

  8. Videos zum Thema
Die Seite wird geladen...
Similar Threads - Python SortierAlgorithmen
  1. Antworten:
    4
    Aufrufe:
    626
  2. Antworten:
    2
    Aufrufe:
    3.773
  3. Antworten:
    7
    Aufrufe:
    2.010
  4. Antworten:
    0
    Aufrufe:
    1.644
  5. Antworten:
    1
    Aufrufe:
    1.028