Mergesort - Ist von Unten nach Oben schneller als Top-Down?

Ich gelesen habe "Algorithms, 4th Ed" von Sedgewick & Wayne, und auf dem Weg habe ich seit der Umsetzung der algorithmen in JavaScript.

Ich vor kurzem nahm die mergesort Beispiele in dem Buch zu vergleichen, top-down und bottom-up-Ansätze... aber ich finde, dass bottom-up schneller läuft (glaube ich). Siehe meine Analyse auf meinem blog.
- http://www.akawebdesign.com/2012/04/13/javascript-mergesort-top-down-vs-bottom-up/

Habe ich nicht in der Lage gewesen zu finden, jede Diskussion, sagt eine Methode mergesort, sollte schneller sein als die anderen. Ist meine Umsetzung (oder Analyse) fehlerhaft?

Hinweis: meine Analyse misst die iterative Schleifen des Algorithmus, nicht unbedingt das array vergleicht/bewegt. Vielleicht ist dies fehlerhaft oder irrelevant?

EDIT: Meine Analyse hat nicht wirklich Zeit, die Geschwindigkeit, so dass meine Aussage, es läuft "schneller" ist ein wenig irreführend. Ich bin die Verfolgung der "Iterationen" durch die rekursive Methode (top-down) und die for-Schleifen (bottom-up) - und bottom-up zu verwenden scheint weniger Iterationen.

  • Der Vergleich und die Austauschvorgänge sind die wichtigsten Kostenpositionen in Art Analyse, bin ich mir ziemlich sicher.
  • ja, Sie würde normalerweise werden die Elemente zu analysieren, die bei einem Vergleich verschiedener algorithmen zur Sortierung. Aber in diesem Fall, Sie sollten das gleiche zu sein... Sie sind den gleichen Algorithmus, also das ist nicht das, was ich bin nach. Meine Implementierung Spiegel, was ist in dem Buch... ist es nur möglich, dass bottom-up verwendet weniger Schleifen über/durch das array hat aber die gleiche Anzahl von vergleicht/bewegt?
  • Ich sehe Ihren Punkt... aber die sind nicht trägt, um die Verschiedenheit in meiner iteration-count. Wenn Sie einen Blick auf meinen code, ich bin nur die Verfolgung der Iterationen innerhalb der rekursiven/iterativen Schleifen. Math.floor() hat das nichts zu tun - ich bin nicht mit einem Zeit-basierte Analyse
  • Vielleicht "schneller laufen" in meinem ursprünglichen Beitrag ist nicht korrekt. Ich bin der Suche nach dem bottom-up-Schleifen über die Arrays mal weniger, aber das kann nicht haben etwas zu tun mit "speed"
  • Gibt es irgendwelche Unterschiede, wenn Sie beim Sortieren ein array, dessen Größe ist genau eine Potenz von 2?
  • Ja... mit array der Größe 1024, top-down hat 22,527 "Iterationen", während bottom-up hat 21,513 "Iterationen".

InformationsquelleAutor arthurakay | 2012-04-14
Schreibe einen Kommentar