Articles

Was ist Sortieren?


Beste Antwort

In der Informatik ist ein Sortieralgorithmus ist ein Algorithmus, der Elemente einer Liste in eine bestimmte Reihenfolge bringt. Die am häufigsten verwendeten Ordnungen sind numerische Reihenfolge und lexikografische Reihenfolge. Eine effiziente Sortierung ist wichtig, um die Effizienz anderer Algorithmen (z. B. Such- und Zusammenführungsalgorithmen) zu optimieren, bei denen Eingabedaten in sortierten Listen enthalten sein müssen. Das Sortieren ist häufig auch nützlich, um Daten zu kanonisieren und für Menschen lesbare Ausgaben zu erstellen. Formal muss die Ausgabe eines Sortieralgorithmus zwei Bedingungen erfüllen:

  • Die Ausgabe erfolgt in nicht abnehmender Reihenfolge (jedes Element ist nicht kleiner als das vorherige Element gemäß der gewünschten Gesamtreihenfolge);
  • Die Ausgabe ist eine Permutation (eine Neuordnung, wobei jedoch alle ursprünglichen Elemente beibehalten werden) der Eingabe.

Außerdem werden die Eingabedaten häufig in einem Array gespeichert, das ermöglicht den wahlfreien Zugriff anstelle einer Liste, die nur den sequentiellen Zugriff ermöglicht; Obwohl viele Algorithmen nach einer geeigneten Änderung auf beide Datentypen angewendet werden können.

Sortieralgorithmen werden häufig als Wort gefolgt vom Wort „sort“ bezeichnet und im Englischen grammatikalisch als Nominalphrasen verwendet, z Beispiel im Satz „Es ist ineffizient, die Einfügungssortierung für große Listen zu verwenden“ bezieht sich die Phrase Einfügungssortierung auf den Sortieralgorithmus für die Einfügungssortierung definitiv in Reichweite, wenn Sie sie in Erinnerung behalten können. Du musst wie O (n log n) vergleichen, oder? Wenn Sie nicht können, können Sie sortieren, was in den Speicher Ihres Computers passt (oder Computer, wenn Sie ein verteiltes System haben), und die Ergebnisse zusammenführen. Zu einem Zeitpunkt in den 1990er Jahren hatte eine modifizierte Zusammenführungssortierung den Weltgeschwindigkeitsrekord und einen Super linear pro CPU beschleunigen.

Etwas anderes tun Sie jedoch, wenn N groß wird (oder wenn etwas für vernünftige Eingaben langsam wird), schauen Sie sich genauer an, was Sie wirklich brauchen.

Warum müssen Sie die Objekte sortieren? Wenn Sie nur nach Duplikaten suchen, gibt es weitaus schnellere Möglichkeiten! Wenn Sie die unteren (oder oberen) 5\% verarbeiten möchten, gibt es O (n) -Algorithmen, die basierend auf dem Post partitionieren können Position sortieren!

Wenn die Dinge langsam werden, schauen Sie sich an, was gerade passiert, und bevor Sie herausfinden, ob dies der schnellste Algorithmus ist, tun Sie, was auch immer das ist, Sie finden heraus, ob dies tatsächlich das Richtige ist überhaupt! (Ausnahme: Wenn das schnellere „Was auch immer“ ein bereits debuggtes Thin ist, das Sie einfach einschlagen können, ist es möglicherweise besser, dies zu tun… als ob Sie feststellen, dass Sie ar sind Wenn Sie testen, ob ein Array ein Element viele Male enthält, kann es einfacher sein, das Array durch ein Set zu ersetzen und festzustellen, ob es jetzt schnell genug ist, dass es Ihnen egal ist, dass Sie bei weiteren sechs Stunden Recherche die Hälfte davon eliminieren könnten die Schecks oder was auch immer).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.