{"id":4003,"date":"2024-08-08T17:45:07","date_gmt":"2024-08-08T15:45:07","guid":{"rendered":"https:\/\/www.capri-soft.de\/blog\/?p=4003"},"modified":"2024-08-09T14:42:45","modified_gmt":"2024-08-09T12:42:45","slug":"algorithmen-und-datenstrukturen-der-merge-sort-in-java","status":"publish","type":"post","link":"https:\/\/www.capri-soft.de\/blog\/?p=4003","title":{"rendered":"Algorithmen und Datenstrukturen: Der Merge Sort in Java"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Der Algorithmus<\/h2>\n\n\n\n<p>Der MergeSort-Algorithmus ist ein stabiler Sortieralgorithmus nach dem Teile-und-Herrsche-Prinzip. Im ersten Teil wird das Array rekursiv so lange halbiert, bis in jeder Liste nur noch 1 Element vorhanden ist. Bei einer Liste mit einem Element geht man davon aus, dass die Liste automatisch als sortiert gilt. Danach k\u00f6nnen alle nachfolgenden Operationen von zwei sortierten Listen ausgehen, wodurch weniger Operationen beim Zusammenf\u00fchren ausreichen um ein neues sortiertes Array zu erhalten.<\/p>\n\n\n\n<p>Im zweiten Teil werden die bereits sortierten Listenh\u00e4lften verglichen und mit der Komplexit\u00e4t O(n) je rekursiver Iteration verglichen und zusammengef\u00fchrt (siehe den nachfolgenden JAVA Code).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/TeileHerrscheMergeSort-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"474\" height=\"267\" data-attachment-id=\"4031\" data-permalink=\"https:\/\/www.capri-soft.de\/blog\/?attachment_id=4031\" data-orig-file=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/TeileHerrscheMergeSort-1.png?fit=1280%2C720&amp;ssl=1\" data-orig-size=\"1280,720\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"TeileHerrscheMergeSort\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/TeileHerrscheMergeSort-1.png?fit=474%2C267&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/TeileHerrscheMergeSort-1.png?resize=474%2C267&#038;ssl=1\" alt=\"\" class=\"wp-image-4031\" srcset=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/TeileHerrscheMergeSort-1.png?resize=1024%2C576&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/TeileHerrscheMergeSort-1.png?resize=300%2C169&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/TeileHerrscheMergeSort-1.png?resize=768%2C432&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/TeileHerrscheMergeSort-1.png?w=1280&amp;ssl=1 1280w, https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/TeileHerrscheMergeSort-1.png?w=948&amp;ssl=1 948w\" sizes=\"auto, (max-width: 474px) 100vw, 474px\" \/><\/a><\/figure>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: java; title: ; notranslate\" title=\"\">\npackage AlgoDat;\n\npublic class MergeSort {\n    \/\/ Zu sortierendes Array\n    private int myArray&#x5B;] = {22, 6, 2, 4, 10, 3, 9, 7, 5, 8, 1};\n\n    \/\/ H\u00e4lt die Klasse als instanziertes Objekt\n    @SuppressWarnings(&quot;unused&quot;)\n    private static MergeSort program;\n\n    \/\/ Hilfsfunktion f\u00fcr das Ausgeben des Arrays\n    public void OutputOfIntArray(int myArray&#x5B;])\n    {\n        if (myArray != null)\n        {\n            for (int i = 0; i &lt; myArray.length; i++) {\n                if (i &gt; 0) System.out.print(&quot;;&quot;);\n                System.out.print(myArray&#x5B;i]);\n            }\n\n            System.out.println();\n        }\n    }\n\n    public void mergeSort(int myArray&#x5B;])\n    {\n        \/\/ zun\u00e4chst wird das Array ab der H\u00e4lfte in zwei\n        \/\/ Arrays links und rechts geteilt, das passiert\n        \/\/ rekursiv ... und zwar so lange bis jedes Element\n        \/\/ f\u00fcr sich nur noch 1x vorhanden ist (Teile-Herrsche-Prinzip).\n        \/\/ Das Teilen ist damit erledigt und nun sollte da\n        \/\/ Problem dadurch beherrschbarer werden -&gt; nun \n        \/\/ werden die Einzelelemente wieder in Arrays sortiert. \n        \/\/ Die Abbruchbedingung der Rekursion ist, wenn die Liste \n        \/\/ nur noch ein einziges Element hat, wobei die Liste bei\n        \/\/ einem einzigem Element als sortiert gilt.\n        if (myArray.length == 1) return;\n\n        \/\/ weist bei ungeraden Zahlen eine abgerundete Ganzzahl zu\n        int indexHaelfte = myArray.length \/ 2;\n\n        int&#x5B;] linkeHaelfte = new int&#x5B;indexHaelfte];\n\n        \/\/ Die abgerundete Ganzzahl kann von der L\u00e4nge abgezogen werden\n        \/\/ um die Gr\u00f6\u00dfe des rechten Arrays zu erhalten.\n        int&#x5B;] rechteHaelfte = new int&#x5B;myArray.length - indexHaelfte];\n\n        \/\/ Bef\u00fclle die linke H\u00e4lfte \n        for (int i = 0; i &lt; indexHaelfte; i++)\n        {\n            linkeHaelfte&#x5B;i] = myArray&#x5B;i];\n        }\n\n        \/\/ Bef\u00fclle die rechte H\u00e4lfte \n        for (int i = indexHaelfte; i &lt; myArray.length; i++)\n        {\n            rechteHaelfte&#x5B;i - indexHaelfte] = myArray&#x5B;i];\n        }\n\n        \/\/ Hier ist der rekursive Aufruf, indem die beiden H\u00e4lften an\n        \/\/ die mergeSort-Methode selbst \u00fcbergeben wird.\n        this.mergeSort(linkeHaelfte);\n        this.mergeSort(rechteHaelfte);\n\n        \/\/ Hier werden die beiden Arrays wieder kombiniert (geMerged)\n        this.merge(myArray, linkeHaelfte, rechteHaelfte);\n    }\n\n    private void merge(int&#x5B;] mergeArray, int&#x5B;] linkeHaelfte, int&#x5B;] rechteHaelfte)\n    {\n        System.out.print(&quot;Vergleiche linke H\u00e4lfte: &quot;);\n        this.OutputOfIntArray(linkeHaelfte);\n        System.out.print(&quot;mit rechter H\u00e4lfte &quot;);\n        this.OutputOfIntArray(rechteHaelfte);\n\n        int iteratorLinks = 0, iteratorRechts = 0, iteratorMergeArray = 0;\n\n        \/\/ Da die linke und reche H\u00e4lfte bereits sortiert sind, funktioniert die Zuweisung\n        \/\/ in ein neues Array mit einer einzigen Schleife der Komplexit\u00e4t\/Ordnung O(n).\n        while (iteratorLinks &lt; linkeHaelfte.length &amp;&amp; iteratorRechts &lt; rechteHaelfte.length)\n        {\n            if (linkeHaelfte&#x5B;iteratorLinks] &lt;= rechteHaelfte&#x5B;iteratorRechts])\n            {\n                mergeArray&#x5B;iteratorMergeArray] = linkeHaelfte&#x5B;iteratorLinks];\n                iteratorLinks++;\n            }\n            else\n            {\n                mergeArray&#x5B;iteratorMergeArray] = rechteHaelfte&#x5B;iteratorRechts];\n                iteratorRechts++;\n            }\n\n            iteratorMergeArray++;\n        }\n\n        \/\/ Wenn noch Elemente in der linken H\u00e4lfte waren, die nicht verglichen wurden,\n        \/\/ werden diese dem Merged Array hinzugef\u00fcgt\n        while (iteratorLinks &lt; linkeHaelfte.length)\n        {\n            mergeArray&#x5B;iteratorMergeArray] = linkeHaelfte&#x5B;iteratorLinks];\n            iteratorLinks++;\n            iteratorMergeArray++;\n        }\n\n        \/\/ Wenn noch Elemente in der rechten Array-H\u00e4lfte waren, die nicht verglichen wurden,\n        \/\/ werden diese dem Merged Array hinzugef\u00fcgt\n        while (iteratorRechts &lt; rechteHaelfte.length)\n        {\n            mergeArray&#x5B;iteratorMergeArray] = rechteHaelfte&#x5B;iteratorRechts];\n            iteratorRechts++;\n            iteratorMergeArray++;\n        }\n    }\n\n    \/\/ Konstruktor\n    public MergeSort()\n    {\n        System.out.print(&quot;Vorher: &quot;);\n        this.OutputOfIntArray(myArray);\n\n        \/\/ Wir lagern alles weitere in eine eigene Methode aus, \n        \/\/ da MergeSort ein rekursiver Algorithmus ist, dessen \n        \/\/ Funktion aufgerufen werden muss und beeginnen mit dem \n        \/\/ unsortierten Array\n        this.mergeSort(myArray);\n\n        System.out.print(&quot;Nachher: &quot;);\n        this.OutputOfIntArray(myArray);\n    }\n\n    public static void main(String&#x5B;] args) \n    {\n        \/\/ Instanziere aus den statischem Programm ein echtes Objekt\n        \/\/ damit nicht alle Methoden und Variablen static sein m\u00fcssen.\n        program = new MergeSort();\n    }\n}\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">Ausgabe<\/h2>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nVorher: 22;6;2;4;10;3;9;7;5;8;1\nVergleiche linke H\u00e4lfte: 22\nmit rechter H\u00e4lfte 6\nVergleiche linke H\u00e4lfte: 4\nmit rechter H\u00e4lfte 10\nVergleiche linke H\u00e4lfte: 2\nmit rechter H\u00e4lfte 4;10\nVergleiche linke H\u00e4lfte: 6;22\nmit rechter H\u00e4lfte 2;4;10\nVergleiche linke H\u00e4lfte: 9\nmit rechter H\u00e4lfte 7\nVergleiche linke H\u00e4lfte: 3\nmit rechter H\u00e4lfte 7;9\nVergleiche linke H\u00e4lfte: 8\nmit rechter H\u00e4lfte 1\nVergleiche linke H\u00e4lfte: 5\nmit rechter H\u00e4lfte 1;8\nVergleiche linke H\u00e4lfte: 3;7;9\nmit rechter H\u00e4lfte 1;5;8\nVergleiche linke H\u00e4lfte: 2;4;6;10;22\nmit rechter H\u00e4lfte 1;3;5;7;8;9\nNachher: 1;2;3;4;5;6;7;8;9;10;22\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">Komplexit\u00e4t: O-Notation (Ordnung)<\/h2>\n\n\n\n<p>Der MergeSort besteht aus 3 Teilen, die sich zu der Gesamtkomplexit\u00e4t zusammensetzen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Teil 1: (Rekursives) Teilen<\/h3>\n\n\n\n<p>Wenn wir ein Array der Gr\u00f6\u00dfe <em><strong>n<\/strong><\/em> in zwei H\u00e4lften teilen, ben\u00f6tigen wir <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/image-4.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"69\" height=\"21\" data-attachment-id=\"4007\" data-permalink=\"https:\/\/www.capri-soft.de\/blog\/?attachment_id=4007\" data-orig-file=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/image-4.png?fit=69%2C21&amp;ssl=1\" data-orig-size=\"69,21\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/image-4.png?fit=69%2C21&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/image-4.png?resize=69%2C21&#038;ssl=1\" alt=\"\" class=\"wp-image-4007\"\/><\/a><\/figure>\n\n\n\n<p>Schritte. Hierbei handelt es sich um den <strong>Logarithmus dualis<\/strong>, also den Logarithmus zur Basis 2 (wessen Basis f\u00fcr die 2 H\u00e4lften spricht, in die aufgeteilt wird). Dies liegt also daran, dass wir die Liste in jeder Rekursionsebene halbieren. Wir fragen hier also mit welcher Zahl man 2 potenzieren muss um n zu erhalten. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/image-8.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"65\" height=\"17\" data-attachment-id=\"4013\" data-permalink=\"https:\/\/www.capri-soft.de\/blog\/?attachment_id=4013\" data-orig-file=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/image-8.png?fit=65%2C17&amp;ssl=1\" data-orig-size=\"65,17\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/image-8.png?fit=65%2C17&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/image-8.png?resize=65%2C17&#038;ssl=1\" alt=\"\" class=\"wp-image-4013\"\/><\/a><\/figure>\n\n\n\n<p>Wenn wir in dem unsortierten Array 11 Elemente haben, w\u00fcrden wir also fragen, mit welcher Zahl wir 2 potenzieren m\u00fcssen um 11 zu erhalten. Den Exponenten den wir hier erhalten w\u00e4re 4:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/image-6.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"196\" height=\"21\" data-attachment-id=\"4009\" data-permalink=\"https:\/\/www.capri-soft.de\/blog\/?attachment_id=4009\" data-orig-file=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/image-6.png?fit=196%2C21&amp;ssl=1\" data-orig-size=\"196,21\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/image-6.png?fit=196%2C21&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/image-6.png?resize=196%2C21&#038;ssl=1\" alt=\"\" class=\"wp-image-4009\"\/><\/a><\/figure>\n\n\n\n<p>Wir runden die Kommazahl immer auf die n\u00e4chste volle Zahl auf, da wir keine halben Schritte machen k\u00f6nnen. Die Zahl 4 entspricht hier auch der Rekursionstiefe, die ben\u00f6tigt wird bis der aktuelle Rekursions-Heap nur noch aus einem Element bekommt, was zu Abbruch der Rekursion f\u00fchrt. <\/p>\n\n\n\n<p>Der erste Teil besitzt somit die Ordnung:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/image-7.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"102\" height=\"21\" data-attachment-id=\"4011\" data-permalink=\"https:\/\/www.capri-soft.de\/blog\/?attachment_id=4011\" data-orig-file=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/image-7.png?fit=102%2C21&amp;ssl=1\" data-orig-size=\"102,21\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/image-7.png?fit=102%2C21&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/image-7.png?resize=102%2C21&#038;ssl=1\" alt=\"\" class=\"wp-image-4011\"\/><\/a><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Teil 2 und 3: Sortieren und Mergen<\/h3>\n\n\n\n<p>Der Schritt des Zusammenf\u00fchrens (des Mergens) beider Liste ist mit der Sortierung kombiniert. Hier wird vorausgesetzt dass bereits sortierte Listenh\u00e4lften vorliegen, da man zwei bereits sortierte Arrays mit der Komplexit\u00e4t n vergleichen kann. Beim Zusammenf\u00fchren der sortierten Teillisten ben\u00f6tigen wir<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/image-9.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"44\" height=\"21\" data-attachment-id=\"4015\" data-permalink=\"https:\/\/www.capri-soft.de\/blog\/?attachment_id=4015\" data-orig-file=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/image-9.png?fit=44%2C21&amp;ssl=1\" data-orig-size=\"44,21\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/image-9.png?fit=44%2C21&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/image-9.png?resize=44%2C21&#038;ssl=1\" alt=\"\" class=\"wp-image-4015\"\/><\/a><\/figure>\n\n\n\n<p>Zeit. Dieser Schritt ist linear abh\u00e4ngig von der Gesamtanzahl der Elemente.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Gesamt-Komplexit\u00e4t<\/h3>\n\n\n\n<p>Somit ergibt sich die Gesamtkomplexit\u00e4t:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/image-3.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"240\" height=\"21\" data-attachment-id=\"4006\" data-permalink=\"https:\/\/www.capri-soft.de\/blog\/?attachment_id=4006\" data-orig-file=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/image-3.png?fit=240%2C21&amp;ssl=1\" data-orig-size=\"240,21\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/image-3.png?fit=240%2C21&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/www.capri-soft.de\/blog\/wp-content\/uploads\/2024\/08\/image-3.png?resize=240%2C21&#038;ssl=1\" alt=\"\" class=\"wp-image-4006\"\/><\/a><\/figure>\n\n\n\n<p>im Worst-, Normal- und Best-Case. <\/p>\n\n\n\n<p><\/p>\n<iframe src=\"http:\/\/www.facebook.com\/plugins\/like.php?href=https%3A%2F%2Fwww.capri-soft.de%2Fblog%2F%3Fp%3D4003&amp;layout=standard&amp;show_faces=true&amp;width=450&amp;action=like&amp;colorscheme=light\" scrolling=\"no\" frameborder=\"0\" allowTransparency=\"true\" style=\"border:none; overflow:hidden; width:450px;margin-top:5px;\"><\/iframe>","protected":false},"excerpt":{"rendered":"<p>Der Algorithmus Der MergeSort-Algorithmus ist ein stabiler Sortieralgorithmus nach dem Teile-und-Herrsche-Prinzip. Im ersten Teil wird das Array rekursiv so lange halbiert, bis in jeder Liste nur noch 1 Element vorhanden ist. Bei einer Liste mit einem Element geht man davon aus, dass die Liste automatisch als sortiert gilt. Danach k\u00f6nnen alle nachfolgenden Operationen von zwei &hellip; <a href=\"https:\/\/www.capri-soft.de\/blog\/?p=4003\" class=\"more-link\"><span class=\"screen-reader-text\">Algorithmen und Datenstrukturen: Der Merge Sort in Java<\/span> weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[15,3],"tags":[454,467,457,471,472,474,473],"class_list":["post-4003","post","type-post","status-publish","format-standard","hentry","category-java","category-programmierung","tag-algodat","tag-algorithmen-und-datenstrukturen","tag-java","tag-merge-sort","tag-mergesort","tag-recursive","tag-rekursiv"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p4yGeN-12z","jetpack_likes_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/4003","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4003"}],"version-history":[{"count":20,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/4003\/revisions"}],"predecessor-version":[{"id":4037,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/4003\/revisions\/4037"}],"wp:attachment":[{"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4003"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4003"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4003"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}