Ich habe Shell in C und nur etwa 3 mal schneller als Bubble Sort implementiert. Hier ist meine Sortierdauer in Sekunden:Shell sortieren nur 3 mal schneller als Bubble sort?
For list of 100 integers:
BubbleSort: 0.000333
ShakeSort: 0.000282
QuickSort: 0.000048
QuickSort_Iter: 0.000063
InsertionSort: 0.000188
ShellSort: 0.000150
For list of 1000 integers:
BubbleSort: 0.028191
ShakeSort: 0.019354
QuickSort: 0.000435
QuickSort_Iter: 0.000528
InsertionSort: 0.011917
ShellSort: 0.003664
For list of 5000 integers:
BubbleSort: 0.241116
ShakeSort: 0.222127
QuickSort: 0.001306
QuickSort_Iter: 0.001592
InsertionSort: 0.151656
ShellSort: 0.091002
For list of 10000 integers:
BubbleSort: 0.959580
ShakeSort: 0.872648
QuickSort: 0.002877
QuickSort_Iter: 0.003379
InsertionSort: 0.601329
ShellSort: 0.350866
Es sich normal oder ist es wahrscheinlich ein Problem mit meiner Implementierung?
Es hängt enorm auf Dataset – Jcl
es Array-basierten Vektor von pseudozufälligen Ganzzahlen 0-999. Ich frage mich nur, ob es überhaupt eine angemessene Leistung für Shell-Sortierung, unter jeder Bedingung – LynnXe
Es gibt keine solche Sache wie "keine" Bedingung. Bedingung ist wirklich wichtig ... stellen Sie sich vor, Sie haben ein komplett sortiertes Zahlenfeld mit Ausnahme der ersten und der letzten, die getauscht werden: In diesem Fall ist die Shell-Sortierung wahrscheinlich schneller als die Blasensortierung (da sie einen Swap durchführen kann) bubble sort müsste alle Zahlen tauschen) ... aber das ist nur ein Randfall: Es bedeutet nicht, dass die Blasensortierung langsamer oder schneller ist als die Shell-Sortierung, sondern nur für diesen spezifischen Datensatz. Das 'n' im großen O zählt, viel :-) – Jcl