ForHosting KIT · Entwickler-Tools

Merge-Sort-Vergleiche: Worst Case und Durchschnitt

Dieser Rechner schätzt, wie viele Elementvergleiche ein gewöhnlicher Top-down-Merge-Sort für n Elemente ausführt.

● BetaKostenlos · im Browser
Nutzen Sie es über WebAPIE-MailTelegramApp bald

Er liefert den exakten Worst Case, den Erwartungswert bei gleichverteilter zufälliger Reihenfolge, die Anzahl rekursiver Ebenen und n mal den Logarithmus von n zur Basis 2 als Referenz. So können Sie das linearithmische Wachstum konkret erkennen und von quadratischem Sortierverhalten unterscheiden.

Was der Rechner zählt

Berücksichtigt werden Ordnungsvergleiche zwischen Elementen während des Zusammenführens, also die zentrale Operation der üblichen Merge-Sort-Analyse. Indexprüfungen, Zuweisungen, Schreibvorgänge in temporäre Arrays, rekursive Aufrufe, Speicherbelegungen und interne Arbeit eines anwendungsspezifischen Vergleichers zählen nicht dazu. Ein einzelnes Element benötigt keinen Vergleich. Bei größeren Eingaben teilt der Algorithmus den Bereich, sortiert beide Teile und vergleicht wiederholt deren erste noch nicht verbrauchte Elemente. Das Zusammenführen von Gruppen mit a und b Elementen erfordert höchstens a plus b minus einen Vergleich, weil das letzte verbleibende Element ohne weiteren Vergleich kopiert werden kann. Der Worst Case wendet diese Regel auf den tatsächlichen Teilungsbaum an, auch wenn n keine Zweierpotenz ist. Verwenden Sie n_log2_n daher als Größenreferenz und die Vergleichsfelder als operative Schätzwerte.

Herleitung von Worst Case und Durchschnitt

Die exakte Worst-Case-Formel lautet: n mal die aufgerundete Zahl des Logarithmus von n zur Basis 2, minus zwei hoch dieser Zahl, plus eins. Sie beschreibt einen üblichen binären Merge Sort mit möglichst gleichmäßig geteilten Teilarrays. Der Durchschnitt ist ein Erwartungswert über gleichverteilt zufällige Permutationen verschiedener Schlüssel. Beim Zusammenführen von Folgen mit a und b Elementen beträgt er a plus b, minus a geteilt durch b plus eins, minus b geteilt durch a plus eins. Der Rechner summiert diese Kosten rekursiv über denselben ausgeglichenen Baum und rundet nur die angezeigte Endzahl auf sechs Dezimalstellen. Ein Erwartungswert darf gebrochen sein, obwohl jeder konkrete Lauf ganzzahlig viele Vergleiche ausführt. Doppelte Schlüssel, andere Gleichstandsregeln, natürliche Läufe oder Schwellen für Insertion Sort können den beobachteten Wert verändern.

Das linearithmische Ergebnis einordnen

n_log2_n zeigt die typische linearithmische Skala. Jede weitere Zusammenführungsebene verarbeitet alle n Elemente, während die Zahl der Ebenen nur logarithmisch wächst. Die beiden Verhältnisfelder teilen die Schätzwerte durch n mal den Logarithmus von n zur Basis 2. Damit sehen Sie für n größer als eins, wie nah die konkreten Werte an dieser Referenz liegen. Diese Angaben sind beschreibend, weder Komplexitätsbeweis noch Hardware-Benchmark. Speicherverkehr, Allokationen, Vergleicherkosten, Cache und Laufzeitumgebung können die reale Dauer bestimmen. Testen Sie Werte unmittelbar unter und über Zweierpotenzen. An diesen Grenzen ändert sich die Rekursionstiefe; zugleich wird sichtbar, warum die O-Notation Konstanten und Terme niedrigerer Ordnung ausblendet, obwohl diese für eine konkrete Eingabe weiterhin relevant sind.

Teure Vergleicher einplanen

Schätzen Sie Aufrufe eines aufwendigen Datensatzvergleichers vor einer großen stabilen Sortierung.

Algorithmisches Wachstum erklären

Vergleichen Sie exakte Werte mit n mal dem Logarithmus von n zur Basis 2.

Testerwartungen festlegen

Bestimmen Sie eine Worst-Case-Obergrenze für eine instrumentierte Implementierung.

Was bedeutet hier ein Vergleich?

Gemeint ist ein Ordnungsvergleich beim Zusammenführen sortierter Folgen; Verwaltung und Datenbewegung zählen nicht.

Warum kann der Durchschnitt gebrochen sein?

Er ist der Erwartungswert über alle gleichverteilt zufälligen Permutationen, nicht das Ergebnis eines Laufs.

Berücksichtigt die Schätzung doppelte Werte?

Nein. Das Durchschnittsmodell setzt verschiedene Schlüssel voraus; Duplikate können den Wert ändern.

Ist dies ein Laufzeit-Benchmark?

Nein. Speicher, Prozessor, Laufzeitumgebung, Allokationen und Latenzen werden nicht modelliert.

Welche Merge-Sort-Variante wird modelliert?

Ein gewöhnlicher binärer Top-down-Merge-Sort mit möglichst gleich großen Teilbereichen.

Was kostet eine API-Anfrage?

Jede API-Anfrage kostet $0.002; im Browser kann dieselbe deterministische Logik laufen.

Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.

POSThttps://api.kit.forhosting.com/dev/merge-sort-comparisons

Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.

curl -X POST https://api.kit.forhosting.com/dev/merge-sort-comparisons \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"n":8}'
{
  "n": 8
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "dev.merge_sort_comparisons",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.

pro Anfrage$0.002

Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.

HTTPCodeBedeutung
401unauthorizedDer API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer).
402insufficient_balanceIhr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht.
404unknown_typeUnbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog.
429rate_limitedZu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt.

Vollständige KIT-Dokumentation lesen →