Ich frage mich nur warum Java
und .NET Framework
verwende standardmäßig einen anderen Sortieralgorithmus.
In Java wird Array.Sort()
standardmäßig der Merge Sort- Algorithmus verwendet, und wie auf Wikipedia.com angegeben :
In Java verwenden die Arrays.sort () -Methoden abhängig von den Datentypen eine Zusammenführungssortierung oder eine optimierte Schnellsortierung. Um die Implementierung effizienter zu gestalten, wechseln Sie zur Einfügungssortierung, wenn weniger als sieben Arrayelemente sortiert werden
In .NET Framework Array.Sort/List.Sort()
verwendet Quick Sort als Standardsortieralgorithmus ( MSDN ):
List.Sort () verwendet Array.Sort, das den QuickSort-Algorithmus verwendet. Diese Implementierung führt eine instabile Sortierung durch. Das heißt, wenn zwei Elemente gleich sind, wird ihre Reihenfolge möglicherweise nicht beibehalten. Im Gegensatz dazu behält eine stabile Sortierung die Reihenfolge der Elemente bei, die gleich sind.
Ein Blick auf die großartige Tabelle "Algorithmenvergleich" zeigt, dass sich beide Algorithmen in Bezug auf Worst Case und Memory Usage sehr unterschiedlich verhalten:
Sowohl Java
und .NET
sind große Frameworks für Enterprise Solutions Entwicklung, sowohl hat Plattformen für Embedded - Entwicklung. Warum verwenden sie also standardmäßig andere Sortieralgorithmen?