{"id":3997,"date":"2024-08-07T08:42:22","date_gmt":"2024-08-07T06:42:22","guid":{"rendered":"https:\/\/www.capri-soft.de\/blog\/?p=3997"},"modified":"2024-08-07T09:15:40","modified_gmt":"2024-08-07T07:15:40","slug":"algorithmen-und-datenstrukturen-der-bubble-sort-in-java","status":"publish","type":"post","link":"https:\/\/www.capri-soft.de\/blog\/?p=3997","title":{"rendered":"Algorithmen und Datenstrukturen: Der Bubble Sort in Java"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Der Algorithmus<\/h2>\n\n\n\n<p>Beim &#8222;Bubble Sort&#8220; markiert die \u00e4u\u00dfere Schleife das erste Element des noch unsortierten Bereichs, w\u00e4hrend die innere Schleife ab diesem Element immer bis zum Ende des Arrays ein Element zum Vergleich rauspickt. Ist ein Element kleiner\/gr\u00f6\u00dfer (je nachdem wie der Vergleichsoperator &#8222;gedreht&#8220; ist) wird getauscht. <\/p>\n\n\n\n<p>Dies f\u00fchrt am Ende zu der Sortierung des Arrays. Im Gegesatz zum Selection Sort, wo nur das Minimum getauscht wird, wird beim Bubble Sort immer getauscht.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: java; title: ; notranslate\" title=\"\">\npackage AlgoDat;\n\npublic class BubbleSort {\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 BubbleSort 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    \/\/ Konstruktor\n    public BubbleSort()\n    {\n        System.out.print(&quot;Vorher: &quot;);\n        this.OutputOfIntArray(myArray);\n\n        \/\/ \u00c4u\u00dfere Schleife: Laufe das zu sortierende Array von Anfang bis Ende durch (Komplexit\u00e4t: n)\n        for (int idxSortierterBereich = 0; idxSortierterBereich &lt; myArray.length - 1 ; idxSortierterBereich++)\n        {\n            \/\/ Innere Schleife: Laufe das Array ab dem Index der \u00e4u\u00dferen Schleife bis Ende durch (Komplexit\u00e4t: n \/ 2)\n            for (int idxUnsortierterBereich = idxSortierterBereich + 1; idxUnsortierterBereich &lt; myArray.length; idxUnsortierterBereich++)\n            {\n                \/\/ Tausche die Array-Inhalte an den Indizes der inneren und \u00e4u\u00dferen Schleife\n                \/\/ wenn diese kleiner\/gr\u00f6\u00dfer sind. Anmerkung: Ein Drehen von &lt; zu &gt; \u00e4ndert die Sortierreihenfolge\n                if (myArray&#x5B;idxUnsortierterBereich] &lt; myArray&#x5B;idxSortierterBereich])\n                {\n                    \/\/ Beim Bubble Sort wird im Gegensatz zum Selection Sort immer getauscht.\n                    \/\/ Beim Selection Sort wird nur das gefundene Minimum getauscht. \n                    \/\/ Dieser Code tauscht das Element am Index der \u00e4u\u00dferen Schleife                \n                    \/\/ mit dem Element am Index der inneren Schleife\n                    int swapVar = myArray&#x5B;idxUnsortierterBereich];\n                    myArray&#x5B;idxUnsortierterBereich] = myArray&#x5B;idxSortierterBereich];\n                    myArray&#x5B;idxSortierterBereich] = swapVar;\n\n                    System.out.print(&quot;Tausche: &quot;);\n                    this.OutputOfIntArray(myArray);\n                }\n            }\n        }\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 BubbleSort();\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\nTausche: 6;22;2;4;10;3;9;7;5;8;1\nTausche: 2;22;6;4;10;3;9;7;5;8;1\nTausche: 1;22;6;4;10;3;9;7;5;8;2\nTausche: 1;6;22;4;10;3;9;7;5;8;2\nTausche: 1;4;22;6;10;3;9;7;5;8;2\nTausche: 1;3;22;6;10;4;9;7;5;8;2\nTausche: 1;2;22;6;10;4;9;7;5;8;3\nTausche: 1;2;6;22;10;4;9;7;5;8;3\nTausche: 1;2;4;22;10;6;9;7;5;8;3\nTausche: 1;2;3;22;10;6;9;7;5;8;4\nTausche: 1;2;3;10;22;6;9;7;5;8;4\nTausche: 1;2;3;6;22;10;9;7;5;8;4\nTausche: 1;2;3;5;22;10;9;7;6;8;4\nTausche: 1;2;3;4;22;10;9;7;6;8;5\nTausche: 1;2;3;4;10;22;9;7;6;8;5\nTausche: 1;2;3;4;9;22;10;7;6;8;5\nTausche: 1;2;3;4;7;22;10;9;6;8;5\nTausche: 1;2;3;4;6;22;10;9;7;8;5\nTausche: 1;2;3;4;5;22;10;9;7;8;6\nTausche: 1;2;3;4;5;10;22;9;7;8;6\nTausche: 1;2;3;4;5;9;22;10;7;8;6\nTausche: 1;2;3;4;5;7;22;10;9;8;6\nTausche: 1;2;3;4;5;6;22;10;9;8;7\nTausche: 1;2;3;4;5;6;10;22;9;8;7\nTausche: 1;2;3;4;5;6;9;22;10;8;7\nTausche: 1;2;3;4;5;6;8;22;10;9;7\nTausche: 1;2;3;4;5;6;7;22;10;9;8\nTausche: 1;2;3;4;5;6;7;10;22;9;8\nTausche: 1;2;3;4;5;6;7;9;22;10;8\nTausche: 1;2;3;4;5;6;7;8;22;10;9\nTausche: 1;2;3;4;5;6;7;8;10;22;9\nTausche: 1;2;3;4;5;6;7;8;9;22;10\nTausche: 1;2;3;4;5;6;7;8;9;10;22\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>O(T(n)) = O(n\u00b2)<\/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%3D3997&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 Beim &#8222;Bubble Sort&#8220; markiert die \u00e4u\u00dfere Schleife das erste Element des noch unsortierten Bereichs, w\u00e4hrend die innere Schleife ab diesem Element immer bis zum Ende des Arrays ein Element zum Vergleich rauspickt. Ist ein Element kleiner\/gr\u00f6\u00dfer (je nachdem wie der Vergleichsoperator &#8222;gedreht&#8220; ist) wird getauscht. Dies f\u00fchrt am Ende zu der Sortierung des &hellip; <a href=\"https:\/\/www.capri-soft.de\/blog\/?p=3997\" class=\"more-link\"><span class=\"screen-reader-text\">Algorithmen und Datenstrukturen: Der Bubble 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,470,467,468,466,469,457,463],"class_list":["post-3997","post","type-post","status-publish","format-standard","hentry","category-java","category-programmierung","tag-algodat","tag-algorithm","tag-algorithmen-und-datenstrukturen","tag-algorithms","tag-bubble-sort","tag-data-structure","tag-java","tag-sort-algorithm"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p4yGeN-12t","jetpack_likes_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/3997","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=3997"}],"version-history":[{"count":3,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/3997\/revisions"}],"predecessor-version":[{"id":4002,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/3997\/revisions\/4002"}],"wp:attachment":[{"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3997"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3997"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.capri-soft.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3997"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}