Zu verwendenden Algorithmus für die alphabetische Sortieren?
Viele Sortier-algorithmen beruhen auf dem Vergleich von zahlen. Wenn ich richtig verstehen, wenn wir über algorithmen-Vergleich für die alphabetische Sortieren, vergleichen wir char-codes(Ihre integer-Darstellung) und Art je nach Ihren Werten. (Deshalb ist bei ASCII
Tabelle schreiben B
hat einen größeren code dann A
). Aber bei diesem Vergleich haben wir irgendwie nur der erste Buchstabe und nicht das ganze Wort. Wenn wir db query
mit ORDER BY
bekommen wir Sortieren für ganze Wörter. (Wie ich verstehe, der Grund dafür ist db-hintergrund, Mechanismen wie Indizes usw.). Auch hörte ich von Radix sort
(sorry, aber es nie benutzt, bevor) und wie ich sehen kann, kann es helfen, mit alphabetischen Sortieren(vielleicht bin ich falsch).
Welcher Algorithmus ist besser für das Sortieren von den ganzen Worten?
Nicht richtig:
Adam
Aaron
Antony
Richtig:
Aaron
Adam
Antony
Und bin ich richtig mit meinen Vermutungen über den gesamten workflow?
"Aber bei diesem Vergleich haben wir irgendwie nur der erste Buchstabe und nicht das ganze Wort" – NÖ ... wenn die ersten Buchstaben der beiden Worte sind die gleichen, dann wird der Vergleich geht weiter mit dem zweiten Buchstaben, und so weiter.
InformationsquelleAutor Viacheslav Kondratiuk | 2013-11-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bist du nicht ganz richtig mit der Annahme über die "Vergleichen Sie nur den ersten Buchstaben". Der Algorithmus ist - wenn die ersten Buchstaben gleich sind, vergleichen Sie den nächsten Brief. Und die nächste. Und die nächste. Bis entweder Sie finden einige Briefe, die unterschiedlich sind, oder eine der Zeichenfolgen abläuft.
Beachten Sie auch, dass der einfache Vergleich von ASCII-codes ist nicht immer genug. Manchmal müssen Sie groß- /Kleinschreibung-Vergleich, wo man bedenkt
A
gleicha
. Manchmal müssen Sie tun, accent-insensitive-Vergleich, wo man bedenktā
gleicha
. Und manchmal müssen Sie berücksichtigen, verrückt, Sprache Scheiße, woß
gleichss
oder schlechter.Mein Rat ist, Ihre Programmiersprache sollte wahrscheinlich haben einige Mechanismen für das vergleichen von strings. Die verwenden. Nicht roll-out Ihre eigenen.
Danach kann jeder Sortier-Algorithmus funktioniert. Sie alle verwenden eine einfache Annahme -, dass man vergleichen die Elemente, die Sie Sortieren. Ob Sie ganze zahlen, Zeichenketten oder auch komplexe Objekte, ist irrelevant. So lange, wie Sie können, nehmen Sie zwei beliebige Objekte und sagen: "dieses ist größer und dieser ist kleiner", du bist gut zu gehen.
(Beachten Sie auch, dass Sie müssen konsistent sein darüber. Wenn A==B und B==C, dann werden Sie brauchen, um sicherzustellen, dass A==C. Ähnlich, wenn A < B und B < C, dann müssen Sie Ein < C. Etc.)
Lesen Sie es wieder sorgfältig.
Oops, sorry. Ich sollte mehr Lesen.
InformationsquelleAutor Vilx-
Nein, die Sortierung ist nicht auf der Grundlage der ersten Zeichen oder Länge. Alphabetischer oder besser gesagt als lexikographische Bestellung erfolgt in folgender Weise,
In C++ die Vergleich-Funktion würde wie folgt Aussehen,
InformationsquelleAutor Fallen
Jeder Sortier-Algorithmus funktioniert, wenn die richtige Vergleich Funktion.
Nur sicherstellen, dass der Vergleich zwischen den Elementen vergleicht das ganze strings statt zu schauen, nur das 1. Zeichen, die bei der Implementierung Ihrer Lieblings-Sortier-Algorithmus oder rufen Sie Ihre Bibliothek Sortieren-Funktion der Wahl.
InformationsquelleAutor timrau
Wie Sie bereits erwähnt der einzige Unterschied zwischen dem Sortieren von Zeichenketten statt zahlen ist das
compare
Methode verwendet durch fast alle Sortier-algorithmen (Radix-sort, bucket-sort sind Ausnahmen).Die meisten Zeiten, einer der schnellsten Sortier-algorithmen ist quick-sort.
InformationsquelleAutor MrSmith42
Müssen Sie nur umsetzen, Vergleich-Funktion, die alle - sort-Algorithmus verwenden können. In dieser Funktion vergleichen Sie vergleichen Sie ganze Wörter, Buchstabe für Buchstabe, wie Sie es brauchen.
InformationsquelleAutor Saša Šijak