{"id":4796,"date":"2024-06-14T16:05:40","date_gmt":"2024-06-14T16:05:40","guid":{"rendered":"https:\/\/msgprogramator.sk\/?p=4796"},"modified":"2026-02-17T11:29:19","modified_gmt":"2026-02-17T11:29:19","slug":"selection-sort","status":"publish","type":"post","link":"https:\/\/msgprogramator.sk\/de\/selection-sort\/","title":{"rendered":"Selection sort &#8211; Sortieren nach Auswahl in Java"},"content":{"rendered":"<p>Sortieralgorithmen werden verwendet, um die Elemente eines Arrays oder einer Liste in aufsteigender oder absteigender numerischer oder lexikografischer Reihenfolge neu zu ordnen. Die Sortierung ist sehr wichtig f\u00fcr die optimale Leistung anderer Algorithmen, die sortierte Eingabedaten ben\u00f6tigen.<\/p>\n<p>Es gibt eine Reihe von verschiedenen Sortieralgorithmen. Die Auswahl eines geeigneten Algorithmus h\u00e4ngt von Faktoren wie der Gr\u00f6\u00dfe und den Eigenschaften der Eingabedaten, dem verf\u00fcgbaren Speicher und den Zeit- und Platzanforderungen ab.<\/p>\n<p>Um Ihnen die Auswahl zu erleichtern, stellen wir Ihnen in unserer Serie die bekanntesten Datensortieralgorithmen vor, erkl\u00e4ren ihre Prinzipien, Vor- und Nachteile und programmieren sie in Java.<\/p>\n<p>Bislang haben wir die folgenden Sortieralgorithmen besprochen:<\/p>\n<ul>\n<li><a href=\"https:\/\/msgprogramator.sk\/de\/sortieralgorithmen\/\" target=\"_blank\" rel=\"noopener\">Sortieralgorithmen<\/a>: eine Einf\u00fchrung in das Sortieren von Daten,<\/li>\n<li><a href=\"https:\/\/msgprogramator.sk\/de\/bubble-sort\/\" target=\"_blank\" rel=\"noopener\">Bubble sort<\/a> &#8211; Blasen-Sortierung,<\/li>\n<li><a href=\"https:\/\/msgprogramator.sk\/de\/comb-sort\/\" target=\"_blank\" rel=\"noopener\">Comb sort<\/a> &#8211; Kamm-Sortierung,<\/li>\n<li><a href=\"https:\/\/msgprogramator.sk\/de\/big-o-notation\/\" target=\"_blank\" rel=\"noopener\">Big O Notation<\/a>: Analyse der Algorithmenkomplexit\u00e4t.<\/li>\n<\/ul>\n<p>Heute werden wir uns <strong>Selection soft<\/strong> (die Auswahlsortierung) ansehen.<\/p>\n<h2>Selection sort Algoritmus<\/h2>\n<p>Sortieren durch Auswahl ist ein einfacher Datensortieralgorithmus, der das Eingabefeld in zwei Teile unterteilt: sortiert und unsortiert. Er w\u00e4hlt dann wiederholt das kleinste (gr\u00f6\u00dfte) Element aus dem unsortierten Teil aus und verschiebt es in den sortierten Teil. Der Algorithmus ist bei einer gro\u00dfen Anzahl von Elementen in der Eingabe sehr ineffizient. Er wird jedoch h\u00e4ufig in Situationen verwendet, in denen die Eingabe relativ wenige Elemente enth\u00e4lt, meist in Kombination mit anderen Sortieralgorithmen.<\/p>\n<h2>Das Funktionsprinzip des Selection Sort Algorithmus<\/h2>\n<p>Nehmen wir an, wir wollen den Eingabevektor vom kleinsten zum gr\u00f6\u00dften Element sortieren. Bei der umgekehrten Sortierung wird die gesamte Logik des Algorithmus invertiert. Der sortierte Teil des Arrays ist zu Beginn des Algorithmus immer leer.<\/p>\n<ol>\n<li>Zu Beginn des Algorithmus gehen wir davon aus, dass das erste Element (des unsortierten Teils) das Minimum (d. h. das kleinste) ist.<\/li>\n<li>Wir vergleichen dieses Element mit den \u00fcbrigen Elementen im unsortierten Teil des Arrays und suchen nach dem wirklich kleinsten Element.<\/li>\n<li>Wenn wir ein unbedeutendes Element im unsortierten Teil gefunden haben, ersetzen wir die Elemente.<\/li>\n<li>Das ersetzte Element wird Teil des sortierten Datensatzes, sein Index wird um 1 erh\u00f6ht und der unsortierte Teil wird verringert.<\/li>\n<li>Wir wiederholen die Schritte 1 bis 4, bis das gesamte Array sortiert ist.<\/li>\n<\/ol>\n<p>Anschlie\u00dfend werden wir ein praktisches Beispiel in Java-Code zeigen.<\/p>\n<h2>Vorteile des Algorithmus Selection sort<\/h2>\n<ul>\n<li>Es ist leicht zu verstehen und umzusetzen,<\/li>\n<li>funktioniert gut f\u00fcr kleine Listen von Daten.<\/li>\n<\/ul>\n<h2>Nachteile des Algorithmus Selection sort<\/h2>\n<ul>\n<li>Die Zeitkomplexit\u00e4t ist O(n\u00b2), was ihn zu einem langsamen Algorithmus f\u00fcr einen gro\u00dfen Datensatz macht,<\/li>\n<li>ist nicht stabil.<\/li>\n<\/ul>\n<h2>Selection Sort &#8211; zeitliche Komplexit\u00e4t<\/h2>\n<table width=\"496\">\n<thead>\n<tr>\n<th rowspan=\"2\" width=\"87\"><strong>Algorithmus<\/strong><\/th>\n<th rowspan=\"2\" width=\"77\"><strong>Methode<\/strong><\/th>\n<th colspan=\"3\" width=\"192\"><strong>Zeitliche Komplexit\u00e4t<\/strong><\/th>\n<th rowspan=\"2\" width=\"76\"><strong>Speicher<\/strong><\/th>\n<th rowspan=\"2\" width=\"64\"><strong>Stabil<\/strong><\/th>\n<\/tr>\n<tr>\n<th width=\"68\"><strong>schlechteste<\/strong><\/th>\n<th width=\"59\"><strong>durchschnittlich<\/strong><\/th>\n<th width=\"65\"><strong>beste<\/strong><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td width=\"87\">Selection sort<\/td>\n<td width=\"77\">Auswahl<\/td>\n<td width=\"68\">O(n\u00b2)<\/td>\n<td width=\"59\">O(n\u00b2)<\/td>\n<td width=\"65\">O(n\u00b2)<\/td>\n<td width=\"76\">O(1)<\/td>\n<td width=\"64\">Nein<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Selection sort, Animation, Visualisierung, gif<\/h2>\n<p>Die Visualisierung des Selection sort Algorithmus sieht wie folgt aus:<\/p>\n<figure id=\"attachment_3608\" aria-describedby=\"caption-attachment-3608\" style=\"width: 100px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3606 size-full\" src=\"https:\/\/msgprogramator.sk\/wp-content\/uploads\/2024\/06\/Selection-Sort-Animation.gif\" alt=\"selection sort Animation\" width=\"100\" height=\"371\" \/><figcaption id=\"caption-attachment-3608\" class=\"wp-caption-text\">de:Joestape89, CC BY-SA 4.0, via Wikimedia Commons<\/figcaption><\/figure>\n<p style=\"text-align: center\"><em><span class=\"wp-caption-text\">Quelle: commons.wikimedia.org\/wiki\/Category:Animations_of_sort_algorithms<\/span><\/em><\/p>\n<p>Eine Animation des Algorithmus findest du zum Beispiel unter <a href=\"https:\/\/www.toptal.com\/developers\/sorting-algorithms\" target=\"_blank\" rel=\"nofollow noopener\">Toptal.<\/a> Es gibt 8 Arten von Algorithmen, Sie k\u00f6nnen die Animation auch r\u00fcckw\u00e4rts abspielen.<\/p>\n<p>Auf dieser <a href=\"https:\/\/www.hackerearth.com\/practice\/algorithms\/sorting\/selection-sort\/visualize\/\" target=\"_blank\" rel=\"nofollow noopener\">Seite <\/a> kannst du die einzelnen Schritte des Algorithmus durchgehen, wodurch du die Zeitkomplexit\u00e4t des Algorithmus \u00fcberpr\u00fcfen kannst.<\/p>\n<h2>Implementierung von Selection Sort &#8211; Java-Programm<\/h2>\n<p>Nachdem wir uns mit den Prinzipien des Algorithmus vertraut gemacht haben, k\u00f6nnen wir ihn nun in Java programmieren.<\/p>\n<p><strong><u>SelectionSort.java<\/u><\/strong><\/p>\n<pre><code class=\"language-java\" data-line=\"\">package sorting;\n\npublic class SelectionSort {\n    private boolean change;\n    private int temp;\n\n    public void sort(int data[])\n    {\n        for (int i = 0; i &lt; data.length - 1; i++) {\n            System.out.println(i + 1 + &quot;. iteration&quot;);\n            \/\/ Find the index of the minimum in unsorted part of array\n            int minIndex = i;\n            for (int j = i + 1; j &lt; data.length; j++) {\n                if (data[j] &lt; data[minIndex])\n                    minIndex = j;\n            }\n\n            \/\/ Swap the minimum element with first element from unsorted part, unless they are the same\n            if(i != minIndex) {\n                System.out.print(&quot;Found minimum: &quot; + data[minIndex] + &quot;, swapping with &quot; + data[i] + &quot; =&gt; &quot;);\n                temp = data[minIndex];\n                data[minIndex] = data[i];\n                data[i] = temp;\n            }\n            else\n                System.out.print(&quot;Minimum: &quot; + data[minIndex] + &quot; is on the right spot, no swapping =&gt; &quot;);\n            printArray(data);\n        }\n    }\n\n    \/\/ Function to print an array\n    public void printArray(int data[])\n    {\n        for (int i = 0; i &lt; data.length; i++)\n            System.out.print(data[i] + &quot; &quot;);\n        System.out.println();\n    }\n}<\/code><\/pre>\n<p>&nbsp;<\/p>\n<p><strong><u>Main.java<\/u><\/strong><\/p>\n<pre><code class=\"language-java\" data-line=\"\">import sorting.SelectionSort;\n\npublic class Main {\n    public static void main(String[] args) {\n        int dataToSort[] = { 6, 5, 4, 2, 3, 1, 7 };\n        SelectionSort selectionSort = new SelectionSort();\n        System.out.print(&quot;Input: &quot;);\n        selectionSort.printArray(dataToSort);\n        selectionSort.sort(dataToSort);\n        System.out.print(&quot;Sorted: &quot;);\n        selectionSort.printArray(dataToSort);\n    }\n}<\/code><\/pre>\n<p>Die Ausgabe dieses Beispiels ist:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-3531 size-full\" src=\"https:\/\/msgprogramator.sk\/wp-content\/uploads\/2024\/06\/sorting-algoritms-selection-sort-vystup-770-560.webp\" alt=\"Ausgabe des Beispiels f\u00fcr selection sort\" width=\"770\" height=\"560\" srcset=\"https:\/\/msgprogramator.sk\/wp-content\/uploads\/2024\/06\/sorting-algoritms-selection-sort-vystup-770-560.webp 770w, https:\/\/msgprogramator.sk\/wp-content\/uploads\/2024\/06\/sorting-algoritms-selection-sort-vystup-770-560-300x218.webp 300w, https:\/\/msgprogramator.sk\/wp-content\/uploads\/2024\/06\/sorting-algoritms-selection-sort-vystup-770-560-768x559.webp 768w\" sizes=\"auto, (max-width: 770px) 100vw, 770px\" \/><\/p>\n<p>Wir haben die Dateien mit dem obigen Beispiel in Form von Code vorbereitet, den du direkt in Java ausf\u00fchren kannst. Lade den <a href=\"https:\/\/msgprogramator.sk\/wp-content\/uploads\/2024\/06\/SelectionSort.zip\" target=\"_blank\" rel=\"noopener\"><strong>Selection Sort Java-Code<\/strong><\/a> hier herunter<\/p>\n<p>Wenn du ein <a href=\"https:\/\/msg-life.sk\/de\/stellenangebote\/java-entwickler-senior\/\" target=\"_blank\" rel=\"noopener\">Java Programmierer<\/a> bist und nach Arbeit suchst, schau dir unsere <a href=\"https:\/\/msg-life.sk\/de\/mitarbeiter-benefits\/\" target=\"_blank\" rel=\"noopener\">Mitareiterbenefits <\/a> an und reagiere auf die <a href=\"https:\/\/msg-life.sk\/de\/stellenangebote\/\" target=\"_blank\" rel=\"noopener\">neuesten Stellenangebote<\/a>.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In diesem Artikel erf\u00e4hrst du, was Comb sort ist, sein Prinzip, seine Vorteile und Nachteile sowie ein Beispiel f\u00fcr Java-Code.<\/p>\n","protected":false},"author":14,"featured_media":3527,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[57],"tags":[],"class_list":["post-4796","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/posts\/4796","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/comments?post=4796"}],"version-history":[{"count":5,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/posts\/4796\/revisions"}],"predecessor-version":[{"id":9704,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/posts\/4796\/revisions\/9704"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/media\/3527"}],"wp:attachment":[{"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/media?parent=4796"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/categories?post=4796"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/tags?post=4796"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}