{"id":2443,"date":"2019-12-22T19:05:43","date_gmt":"2019-12-22T16:05:43","guid":{"rendered":"http:\/\/demensdeum.com\/blog\/?p=2443"},"modified":"2024-12-16T22:32:31","modified_gmt":"2024-12-16T19:32:31","slug":"bubble-sort-in-erlang","status":"publish","type":"post","link":"https:\/\/demensdeum.com\/blog\/de\/2019\/12\/22\/bubble-sort-in-erlang\/","title":{"rendered":"Blasensortierung in Erlang"},"content":{"rendered":"<p>Bubble Sort ist ziemlich langweilig, aber es wird interessanter, wenn Sie versuchen, es in einer funktionalen Sprache f\u00fcr die Telekommunikation zu implementieren &#8211; Erlang.<\/p>\n<p>Wir haben eine Liste mit Zahlen, wir m\u00fcssen sie sortieren. Der Blasensortierungsalgorithmus durchl\u00e4uft die gesamte Liste und iteriert und vergleicht die Zahlen paarweise. Bei der Pr\u00fcfung geschieht Folgendes: Eine kleinere Zahl wird zur Ausgabeliste hinzugef\u00fcgt, oder die Zahlen werden in der aktuellen Liste vertauscht, wenn rechts weniger vorhanden sind, wird die Suche mit der n\u00e4chsten Zahl in der Iteration fortgesetzt. Dieser Durchlauf wird wiederholt, bis die Liste keine Ersetzungen mehr enth\u00e4lt.<\/p>\n<p>In der Praxis lohnt sich der Einsatz aufgrund der hohen zeitlichen Komplexit\u00e4t des Algorithmus nicht &#8211; O(n^2); Ich habe es in Erlang im Imperativstil implementiert, aber wenn Sie interessiert sind, k\u00f6nnen Sie nach besseren Optionen suchen:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-unknown\" data-lang=\"unknown\"><code>-module(bubbleSort).\n-export([main\/1]).\n\nstartBubbleSort([CurrentHead|Tail]) -&gt;\n    compareHeads(CurrentHead, Tail, [], [CurrentHead|Tail]).\n\ncompareHeads(CurrentHead, [NextHead|Tail], [], OriginalList) -&gt;   \n    if\n        CurrentHead &lt; NextHead -&gt;\n            compareHeads(NextHead, Tail, [CurrentHead], OriginalList);\n        true -&gt;\n            compareHeads(CurrentHead, Tail, [NextHead], OriginalList)\n    end;\n    \ncompareHeads(CurrentHead, [NextHead|Tail], OriginalOutputList, OriginalList) -&gt;\n    if\n        CurrentHead &lt; NextHead -&gt;\n            OutputList = OriginalOutputList ++ [CurrentHead],\n            compareHeads(NextHead, Tail, OutputList, OriginalList);\n        true -&gt;\n            OutputList = OriginalOutputList ++ [NextHead],\n            compareHeads(CurrentHead, Tail, OutputList, OriginalList)\n    end;\n  \ncompareHeads(CurrentHead, [], OriginalOutputList, OriginalList) -&gt;\n    OutputList = OriginalOutputList ++ [CurrentHead],\n    if\n        OriginalList == OutputList -&gt;\n            io:format(\"OutputList: ~w~n\", [OutputList]);\n        true -&gt;\n            startBubbleSort(OutputList)\n    end.\n  \nmain(_) -&gt;\n    UnsortedList = [69,7,4,44,2,9,10,6,26,1],\n    startBubbleSort(UnsortedList).\n\n<\/code><\/pre>\n<\/div>\n<h3>Installation und Start<\/h3>\n<p>In Ubuntu ist Erlang sehr einfach zu installieren; geben Sie einfach sudo apt install erlang in das Terminal ein. In dieser Sprache muss jede Datei ein Modul sein, mit einer Liste von Funktionen, die extern verwendet werden k\u00f6nnen &#8211; Export. Zu den interessanten Merkmalen der Sprache geh\u00f6ren das Fehlen von Variablen, nur Konstanten, das Fehlen einer Standardsyntax f\u00fcr OOP (was die Verwendung von OOP-Techniken nicht verhindert) und nat\u00fcrlich parallele Berechnungen ohne Sperren basierend auf dem Akteurmodell.<\/p >\n<p>Sie k\u00f6nnen das Modul entweder \u00fcber die interaktive ERL-Konsole ausf\u00fchren, indem Sie einen Befehl nach dem anderen ausf\u00fchren, oder einfacher \u00fcber escript bubbleSort.erl; In verschiedenen F\u00e4llen sieht die Datei anders aus, zum Beispiel m\u00fcssen Sie f\u00fcr escript eine Hauptfunktion erstellen, von der aus sie gestartet wird.<\/p>\n<h3>Quellen<\/h3>\n<p><a href=\"https:\/\/www.erlang.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.erlang.org\/<\/a><br \/><a href=\"https:\/\/habr.com\/ru\/post\/197364\/\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/habr.com\/ru\/post\/197364\/<\/a><\/p>\n<h3>Quellcode<\/h3>\n<p><a href=\"https:\/\/gitlab.com\/demensdeum\/algorithms\/blob\/master\/bubbleSort\/bubbleSort.erl\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/gitlab.com\/ demensdeum\/algorithms\/blob\/master\/bubbleSort\/bubbleSort.erl<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bubble Sort ist ziemlich langweilig, aber es wird interessanter, wenn Sie versuchen, es in einer funktionalen Sprache f\u00fcr die Telekommunikation zu implementieren &#8211; Erlang. Wir haben eine Liste mit Zahlen, wir m\u00fcssen sie sortieren. Der Blasensortierungsalgorithmus durchl\u00e4uft die gesamte Liste und iteriert und vergleicht die Zahlen paarweise. Bei der Pr\u00fcfung geschieht Folgendes: Eine kleinere Zahl<a class=\"more-link\" href=\"https:\/\/demensdeum.com\/blog\/de\/2019\/12\/22\/bubble-sort-in-erlang\/\">Continue reading <span class=\"screen-reader-text\">&#8220;Blasensortierung in Erlang&#8221;<\/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_memberships_contains_paid_content":false,"footnotes":""},"categories":[61,52],"tags":[131,136,137,190],"class_list":["post-2443","post","type-post","status-publish","format-standard","hentry","category-techie","category-tutorials","tag-algorithms","tag-bubble-sort","tag-erlang","tag-sorting","entry"],"translation":{"provider":"WPGlobus","version":"3.0.2","language":"de","enabled_languages":["en","ru","zh","de","fr","ja","pt"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"ru":{"title":true,"content":true,"excerpt":false},"zh":{"title":true,"content":true,"excerpt":false},"de":{"title":true,"content":true,"excerpt":false},"fr":{"title":true,"content":true,"excerpt":false},"ja":{"title":true,"content":true,"excerpt":false},"pt":{"title":true,"content":true,"excerpt":false}}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/posts\/2443","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/comments?post=2443"}],"version-history":[{"count":13,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/posts\/2443\/revisions"}],"predecessor-version":[{"id":3928,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/posts\/2443\/revisions\/3928"}],"wp:attachment":[{"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/media?parent=2443"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/categories?post=2443"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/tags?post=2443"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}