Ich frage mich nur, warum Java
und .NET Framework
standardmäßig einen anderen Sortieralgorithmus verwenden.
In Java verwendet Array.Sort()
standardmäßig den Merge-Sort -Algorithmus und Wikipedia.com sagt:
In Java verwenden die Arrays.sort () Methoden merge sort oder tuned quicksort abhängig von den Datentypen und für die Implementierungseffizienz Wechseln Sie zur Einfügesortierung, wenn weniger als sieben Arrayelemente vorhanden sind sortiert werden
In .NET Framework Array.Sort/List.Sort()
verwendet Schnellsortierung als Standardsortieralgorithmus (< a href="http://msdn.microsoft.com/en-us/library/b0zbh7b6.aspx"> MSDN ):
List.Sort () verwendet Array.Sort, das den QuickSort-Algorithmus verwendet. Dies Implementierung führt eine instabile Sortierung durch; das heißt, wenn zwei Elemente sind gleich, ihre Reihenfolge wird möglicherweise nicht beibehalten. Im Gegensatz dazu eine stabile Sortierung bewahrt die Reihenfolge der Elemente, die gleich sind.
Wenn wir uns die große "Vergleich von Algorithmen" Tabelle anschauen, können wir sehen, dass beide Algorithmen ziemlich unterschiedliche Verhaltensweisen haben aus Worst Case und Memory Usage Perspektiven:
Sowohl Java
als auch .NET
sind großartige Frameworks für die Entwicklung von Enterprise-Lösungen, beide haben Plattformen für die Embedded-Entwicklung. Warum also verwenden sie standardmäßig einen anderen Sortieralgorithmus, irgendwelche Gedanken?
BEARBEITEN: Ich sehe, dass zwei Personen bereits abgestimmt haben, um diese Frage als nicht konstruktiv zu schließen. Ich glaube, dass Java und .NET die beliebtesten Entwicklungs-Frameworks sind, so dass es wirklich interessant wäre, irgendwelche nicht-trivialen und interessanten Gedanken, vielleicht Fakten, zu einer solchen Entscheidung zu finden.
Tags und Links algorithm java .net language-design sorting