#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. + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#5 25. September 2007 AW: SortierAlgorithmen Das ist Selectionsort, oder? Sehr ineffektiver Algorithmus, weil O(n²)... + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren