Was sind die Kriterien für die Auswahl eines Sortieralgorithmus?
Las ich Sortier-Methode, die gehören bubble-sort, selection sort, merge-sort, heap-sort, bucket-sort etc.. enthalten Sie auch Zeit, die Komplexität, die uns helfen, zu wissen, welche Sortierung ist effizient. Also musste ich eine grundlegende Frage. Wenn wir die Daten enthalten, als wie werden wir wählen Sie Sortieren. Time Komplexität ist einer der parameter, die uns helfen, zu entscheiden, Sortier-Methode. Aber wir haben einen anderen parameter zu wählen, Sortier-Methode?.
Nur versuchen, herauszufinden, Sortieren für ein besseres Verständnis.
Dass einige Abfragen zu heap-sort:
-
Wo verwenden wir die heap-sort?
-
Was größer ist, Vorteil heap-sort (mit Ausnahme von Zeit-Komplexität O(n log n))?
-
Was ist der Nachteil von heap-sort?
-
Was ist die build-Zeit für Haufen? (Ich habe gehört, O(n), aber ich bin mir nicht sicher.)
-
Einem Szenario, in dem wir mit heap-sort oder heap-sort ist eine bessere option (außer priority queue)?
-
Bevor der heap-Sortieren von Daten, was sind die parameter werden wir sehen in den Daten?
- Was meinst du mit "wenn wir die Daten enthalten"? Fragen Sie, wie zu wählen Sie ein sort-Methode für einen bestimmten Datensatz?
- Sie haben nicht akzeptiert von den Antworten auf Ihre vorangegangenen Fragen. Das wird eine Menge Leute Weg von Ihnen hilft.
- Ist deine Frage besser ausgedrückt, Was ist die Kriterien zu wählen, Sortier-Algorithmus? Wenn ja, bitte editieren Sie die Q-Titel.
- thx ich werde zu aktualisieren, dass
- Die aktualisierte Frage sieht viel wie Hausaufgaben, also gab ich Ihnen einen link, der helfen könnte in meiner Antwort. Wenn es Hausaufgaben, können Sie fügen Sie die
homework
tag bitte? Wenn nicht, möchten Sie vielleicht Grenzen Sie Ihre Frage ein wenig. - Gut zu Lesen: Kriterien für die Wahl der Sortier-Algorithmus
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den beiden wichtigsten theoretischen Funktionen von Sortier-algorithmen, die Zeit, die Komplexität und räumliche Komplexität.
Im Allgemeinen, Zeit Komplexität lässt uns wissen, wie die performance des Algorithmus-änderungen wie die Größe des Datensatzes steigt. Dinge zu beachten:
Ähnlich, Raum Komplexität beschreibt, wie viel Raum ein Algorithmus ausgeführt werden muss. Zum Beispiel, eine einfache Art, wie insertion sort muss eine weitere Feste Menge an Speicherplatz zum speichern der Wert des Elements wird derzeit eingefügt. Dies ist ein Hilfs-Speicherplatz-Komplexität von O(1) - es ändert sich nicht mit der Größe der Eingabe. Allerdings merge-sort schafft zusätzliche arrays im Speicher, während es ausgeführt wird, mit einem zusätzlichen Raum-Komplexität von O(n). Dies bedeutet, dass die Höhe der zusätzlichen Platz erfordert ist Linear korreliert mit der Größe der Eingabe.
Natürlich, Algorithmus design ist oft ein trade-off zwischen Zeit-und Raum - algorithmen mit ein wenig Platz-Komplexität, erfordern möglicherweise mehr Zeit, und algoithms mit einem geringen zeitlichen Komplexität können mehr Platz benötigen.
Weitere Informationen finden Sie möglicherweise dieses tutorial nützlich.
Beantworten Sie die Updates für Ihre Frage, die Sie kann finden Sie die wikipedia-Seite über Heap-Sort nützlich.
Wenn Euch meine Kriterien für welche Art der Sortierung zu wählen, hier sind einige andere Elemente zu berücksichtigen.
Die Menge der Daten, die Sie haben: Sie haben zehn, hundert, tausend oder Millionen von Elementen sortiert werden.
Komplexität des Algorithmus: je komplexer Die weitere Tests müssen getan werden, um sicherzustellen, dass es korrekt ist. Für kleine Mengen, einen bubble-sort oder quick-sort ist einfach zu Programmieren und zu testen, vers andere Sorten, die zuviel für die Menge der Daten, die Sie haben zu Sortieren.
Wie viel Zeit wird es dauern, zu Sortieren: Wenn Sie einen großen Satz, Blase/quick sort wird nehmen eine Menge Zeit, aber wenn Sie haben eine Menge Zeit, das kann nicht sein ein Problem. Allerdings mit einem komplizierten Algorithmus verringert die Zeit, um zu Sortieren, aber auf Kosten von mehr Aufwand bei der Codierung und testen, was kann es Wert sein, wenn die Sortierung geht von lange (Stunden/Tage), um eine kürzere Zeit.
Den Daten selbst: die Daten nahe, das gleiche für alles. Für einige Sorten können Sie am Ende mit einer linearen Liste, so dass, wenn Sie etwas wissen über die Zusammensetzung der Daten, kann es helfen, bei der Bestimmung der Algorithmus zu wählen, für die Mühe.
Die Menge an Ressourcen zur Verfügung: Sie haben viel Speicher, in dem Sie speichern alle Artikel, oder benötigen Sie das speichern von Sendungen auf die Festplatte. Wenn alles, was nicht in den Speicher passt, merge-sort am besten sein kann, wo andere vielleicht besser, wenn Sie die Arbeit mit alles in Erinnerung.