Sprache programmieren
Die Seite runterladen und die Sprichwörter heraus parsen und dann offline verwenden!?
Ich habe herausbekommen, das es kein Algorithmus in der Form gibt, die diese Aufgabe lösen könnte. So wie ich das vorgehabt habe.
Nun möchte ich Sortierverfahren wie bubblesort, heapsort und quicksort auf Buchstaben/Worte anwenden?
Es geht aber nicht, ich brauche hierbei eure Hilfe. Sitze seit 3Tagen an dieser Sache...komme nicht vorran.
Diese Funktionieren nur mit Zahlen.
def bubblesort(array, cmp = lambda x, y: x > y):
for i in range( len(array) ):
for j in range( len(array)-1-i ):
if cmp(array[j], array[j+1]):
( array[j], array[j+1] ) = ( array[j+1], array[j] )
--------------------------------------------------------------------------------
def makeheap(array):
for i in reverserange(len(array)/2):
fixheap(array, len(array), i)
def heapsort(array):
makeheap(array)
for i in reverserange(len(array)):
(array, array[0]) = (array[0], array)
fixheap(array, i, 0)
quicksortdef partition(array, start, end, cmp):
while start < end:
# at the top of this loop, our partition element is at 'start'
while start < end:
if cmp(array[start], array[end]):
(array[start], array[end]) = (array[end], array[start])
break
end = end - 1
# at the top of this loop, our partition element is at 'end'
while start < end:
if cmp(array[start], array[end]):
(array[start], array[end]) = (array[end], array[start])
break
start = start + 1
return start
-----------------------------------------------------------------------------------
def quicksort(array, cmp=lambda x, y: x > y, start=None, end=None):
"""The fastest exchange sort for most purposes."""
if start is None: start = 0
if end is None: end = len(array)
if start < end:
i = partition(array, start, end-1, cmp)
quicksort(array, cmp, start, i)
quicksort(array, cmp, i+1, end)
ich möchte diese Sortierverfahren in mein Programm einpflegen. Das Programm soll die eingebenen Wörter nach Anfangsbuchstaben sortieren und dann auch zeigen wie lang es mit dem jeweiligen sortierverfahren gedauert hat.
Dabei hab ich mir gedahct das die Ergebnisse mit Hilfe von Tkinter angezeigt werden sollen.
from Tkinter import *
import tkMessageBox
Nun möchte ich Sortierverfahren wie bubblesort, heapsort und quicksort auf Buchstaben/Worte anwenden?
Es geht aber nicht, ich brauche hierbei eure Hilfe. Sitze seit 3Tagen an dieser Sache...komme nicht vorran.
Diese Funktionieren nur mit Zahlen.
def bubblesort(array, cmp = lambda x, y: x > y):
for i in range( len(array) ):
for j in range( len(array)-1-i ):
if cmp(array[j], array[j+1]):
( array[j], array[j+1] ) = ( array[j+1], array[j] )
--------------------------------------------------------------------------------
def makeheap(array):
for i in reverserange(len(array)/2):
fixheap(array, len(array), i)
def heapsort(array):
makeheap(array)
for i in reverserange(len(array)):
(array, array[0]) = (array[0], array)
fixheap(array, i, 0)
quicksortdef partition(array, start, end, cmp):
while start < end:
# at the top of this loop, our partition element is at 'start'
while start < end:
if cmp(array[start], array[end]):
(array[start], array[end]) = (array[end], array[start])
break
end = end - 1
# at the top of this loop, our partition element is at 'end'
while start < end:
if cmp(array[start], array[end]):
(array[start], array[end]) = (array[end], array[start])
break
start = start + 1
return start
-----------------------------------------------------------------------------------
def quicksort(array, cmp=lambda x, y: x > y, start=None, end=None):
"""The fastest exchange sort for most purposes."""
if start is None: start = 0
if end is None: end = len(array)
if start < end:
i = partition(array, start, end-1, cmp)
quicksort(array, cmp, start, i)
quicksort(array, cmp, i+1, end)
ich möchte diese Sortierverfahren in mein Programm einpflegen. Das Programm soll die eingebenen Wörter nach Anfangsbuchstaben sortieren und dann auch zeigen wie lang es mit dem jeweiligen sortierverfahren gedauert hat.
Dabei hab ich mir gedahct das die Ergebnisse mit Hilfe von Tkinter angezeigt werden sollen.
from Tkinter import *
import tkMessageBox
Das klingt jetzt verdammt nach Hausaufgaben. Wenn man etwas sortieren möchte, funktioniert die Sortiermethode von Listen besser als naive Eigenimplementierungen von "schlechteren" Algorithmen.
Fang bitte bei neuen Fragen ein neues Thema an, setz den Quelltext in Code-Tags und stell konkrete Fragen. Vielleicht ein Algorithmus nach dem anderen und nicht alle auf einmal.
Fang bitte bei neuen Fragen ein neues Thema an, setz den Quelltext in Code-Tags und stell konkrete Fragen. Vielleicht ein Algorithmus nach dem anderen und nicht alle auf einmal.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Also zum alphabetischen Sortieren eigent sich eigentlich der Bucketsort. Die Frage ist halt, wie Du die Ordnung definierst, über der Du sortieren willst. Bei Buchstaben eben idR alphabetisch, bei Zahelnwerten eben wertebasiert.Progletic hat geschrieben:Was für Hausaufgaben?
Meine Frage lautet, funktioniert sowas überhaupt? Oder nicht?
Also kann man Sortierverfahren auf Wörter anwenden oder nicht?
Mehrere Leute haben mir gesagt, dass es nicht funktionieren würde.
@Progletic: Natürlich kann man diese Sortierverfahren auf Wörter anwenden. Aber warum sollte man das wollen, wo Listen doch schon eine `sort()`-Methode haben, die um Längen schneller sein dürfte als die anderen Verfahren in Python und naiv selbst implementiert!? So etwas macht man höchstens als Hausaufgabe.