Sprache programmieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
BlackJack

Die Seite runterladen und die Sprichwörter heraus parsen und dann offline verwenden!?
Progletic
User
Beiträge: 13
Registriert: Freitag 2. Mai 2008, 11:26

und wie parse ich das????
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Progletic hat geschrieben:und wie parse ich das????
BeautifulSoup/html5lib. Nutz einfach die Forumssuche.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Progletic
User
Beiträge: 13
Registriert: Freitag 2. Mai 2008, 11:26

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
BlackJack

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.
Progletic
User
Beiträge: 13
Registriert: Freitag 2. Mai 2008, 11:26

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.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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.
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.
BlackJack

@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.
Antworten