{"id":91769,"date":"2022-10-12T05:01:41","date_gmt":"2022-10-12T10:01:41","guid":{"rendered":"https:\/\/blogging-techies.com\/sw\/linjara-och-binara-sokalgoritmer-forklaras\/"},"modified":"2022-10-12T05:01:41","modified_gmt":"2022-10-12T10:01:41","slug":"linjara-och-binara-sokalgoritmer-forklaras","status":"publish","type":"post","link":"https:\/\/blogging-techies.com\/sw\/linjara-och-binara-sokalgoritmer-forklaras\/","title":{"rendered":"Linj\u00e4ra och bin\u00e4ra s\u00f6kalgoritmer f\u00f6rklaras"},"content":{"rendered":"<div>\n<p>M\u00f6jligheten att s\u00f6ka efter vissa data \u00e4r en viktig aspekt av datavetenskap.  S\u00f6kalgoritmer anv\u00e4nds f\u00f6r att leta efter ett visst objekt i en datam\u00e4ngd.<\/p>\n<p>Algoritmer returnerar ett booleskt resultat (sant eller falskt) till en s\u00f6kfr\u00e5ga.  De kan ocks\u00e5 modifieras f\u00f6r att ge den relativa positionen f\u00f6r det hittade v\u00e4rdet.<\/p>\n<p>F\u00f6r den h\u00e4r artikeln kommer algoritmerna att koncentrera sig p\u00e5 att avg\u00f6ra om ett v\u00e4rde finns.<\/p>\n<h2 id=\"linear-search-algorithms\"><span class=\"ez-toc-section\" id=\"Linjara_sokalgoritmer\"><\/span>  Linj\u00e4ra s\u00f6kalgoritmer<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Linj\u00e4r s\u00f6kning kallas \u00e4ven sekventiell s\u00f6kning.  I denna typ av s\u00f6kning bes\u00f6ks varje v\u00e4rde i en lista ett efter ett p\u00e5 ett ordnat s\u00e4tt samtidigt som man kontrollerar om det \u00f6nskade v\u00e4rdet finns.<\/p>\n<p>Algoritmen kontrollerar v\u00e4rde f\u00f6r v\u00e4rde tills den hittar v\u00e4rdet du letar efter eller tar slut p\u00e5 v\u00e4rden att s\u00f6ka efter.  N\u00e4r det tar slut p\u00e5 v\u00e4rden att s\u00f6ka betyder det att din s\u00f6kfr\u00e5ga inte finns i listan.<\/p>\n<p>En sekventiell s\u00f6kalgoritm tar in en lista med v\u00e4rden och det \u00f6nskade objektet i listan som sina parametrar.  Returresultatet initieras som <strong>Falsk<\/strong> och kommer att \u00e4ndras till <strong>Sann<\/strong> n\u00e4r \u00f6nskat v\u00e4rde hittas.<\/p>\n<p>Se Python-implementeringen nedan som ett exempel:<\/p>\n<pre>def linearSearch(mylist, item):<br\/>found = False<br\/>index = 0<br\/>while index &lt; len(mylist) and not found:<br\/>if mylist[index] == item:<br\/>found = True<br\/>else:<br\/>index = index+1<br\/>return found<\/pre>\n<h3 id=\"algorithm-analysis\"><span class=\"ez-toc-section\" id=\"Algoritmanalys\"><\/span>Algoritmanalys<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Det b\u00e4sta scenariot intr\u00e4ffar n\u00e4r det \u00f6nskade objektet \u00e4r det f\u00f6rsta p\u00e5 listan.  Det v\u00e4rsta fallet intr\u00e4ffar n\u00e4r den \u00f6nskade posten \u00e4r den sista p\u00e5 listan (den n:e posten).  D\u00e4rf\u00f6r \u00e4r tidskomplexiteten f\u00f6r linj\u00e4r s\u00f6kning O(n).<\/p>\n<p>Det genomsnittliga fallscenariot i ovanst\u00e5ende algoritm \u00e4r n\/2.<\/p>\n<h3 id=\"modified-linear-search\"><span class=\"ez-toc-section\" id=\"Modifierad_linjar_sokning\"><\/span>Modifierad linj\u00e4r s\u00f6kning<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Det \u00e4r viktigt att veta att algoritmen som anv\u00e4nds f\u00f6ruts\u00e4tter att en slumpm\u00e4ssig lista med objekt tillhandah\u00e5lls till den.  Det vill s\u00e4ga att listobjekten inte \u00e4r i n\u00e5gon speciell ordning.<\/p>\n<p>Anta att f\u00f6rem\u00e5len var i en viss ordning, s\u00e4g fr\u00e5n minsta till st\u00f6rsta.  Det skulle vara m\u00f6jligt att uppn\u00e5 en viss f\u00f6rdel i ber\u00e4kningen.<\/p>\n<p>Ta ett exempel p\u00e5 att leta efter 19 i den givna listan: [2, 5, 6, 11, 15, 18, 23, 27, 34].  Efter att ha n\u00e5tt 23 skulle det st\u00e5 klart att objektet som letas efter inte finns i listan.  D\u00e4rf\u00f6r skulle det inte l\u00e4ngre vara viktigt att forts\u00e4tta s\u00f6ka i resten av listobjekten.<\/p>\n<h2 id=\"binary-search-algorithms\"><span class=\"ez-toc-section\" id=\"Binara_sokalgoritmer\"><\/span>  Bin\u00e4ra s\u00f6kalgoritmer<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Du har sett hur en ordnad lista kan minska ber\u00e4kningen som beh\u00f6vs.  Bin\u00e4r s\u00f6kalgoritm drar \u00e4nnu mer f\u00f6rdel av denna effektivitet som en ordnad lista introducerar.<\/p>\n<p>Algoritmen b\u00f6rjar med att ta ett mellanv\u00e4rde av en ordnad lista och kontrollera om det \u00e4r det \u00f6nskade v\u00e4rdet.  Om det inte \u00e4r det, kontrolleras v\u00e4rdet om det \u00e4r mindre eller st\u00f6rre \u00e4n det \u00f6nskade v\u00e4rdet.<\/p>\n<p>Om det \u00e4r mindre beh\u00f6ver du inte kontrollera den nedre halvan av listan.  Annars, om den \u00e4r st\u00f6rre, flyttar den vidare till den \u00f6vre halvan av listan.<\/p>\n<p>Oavsett vilken underlista (v\u00e4nster eller h\u00f6ger) som v\u00e4ljs, kommer mittv\u00e4rdet \u00e5ter att fastst\u00e4llas.  V\u00e4rdet kontrolleras igen om det \u00e4r det \u00f6nskade v\u00e4rdet.  Om det inte \u00e4r det kontrolleras det om det \u00e4r mindre eller st\u00f6rre \u00e4n det beg\u00e4rda v\u00e4rdet.<\/p>\n<p>Denna process upprepas tills ett v\u00e4rde hittas om det finns d\u00e4r.<\/p>\n<p>Python-implementeringen nedan \u00e4r f\u00f6r den bin\u00e4ra s\u00f6kalgoritmen.<\/p>\n<p>def binarySearch(mylist, item):<\/p>\n<pre>low = 0 <br\/>high = len(mylist) - 1 <br\/>found = False <br\/>while low &lt;= high and not found: mid = (low + high) \/\/ 2 <br\/>if mylist[mid] == item:found = True<br\/>elif item &lt; mylist[mid]:high = mid - 1 <br\/>else:low = mid + 1<br\/>return found<\/pre>\n<h3 id=\"algorithm-analysis\"><span class=\"ez-toc-section\" id=\"Algoritmanalys-2\"><\/span>Algoritmanalys<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Det b\u00e4sta scenariot intr\u00e4ffar n\u00e4r det \u00f6nskade objektet visar sig vara mittobjektet.  Det v\u00e4rsta scenariot \u00e4r dock inte lika enkelt.  F\u00f6lj analysen nedan:<\/p>\n<p>Efter den f\u00f6rsta j\u00e4mf\u00f6relsen kommer n\/2 objekt att finnas kvar.  Efter den andra kommer n\/4 objekt att finnas kvar.  Efter den tredje, n\/8.<\/p>\n<p>L\u00e4gg m\u00e4rke till att antalet objekt forts\u00e4tter att halveras tills de n\u00e5r n\/2i d\u00e4r i \u00e4r antalet j\u00e4mf\u00f6relser.  Efter all splittring slutar vi med endast 1 objekt.<\/p>\n<p>Detta medf\u00f6r:<\/p>\n<p>n\/2i=1 D\u00e4rf\u00f6r \u00e4r bin\u00e4r s\u00f6kning O(log n).<\/p>\n<h2 id=\"moving-on-to-sorting\"><span class=\"ez-toc-section\" id=\"Gar_vidare_till_sortering\"><\/span>  G\u00e5r vidare till sortering<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>I bin\u00e4r s\u00f6kning \u00f6verv\u00e4gde vi ett fall d\u00e4r den givna arrayen redan var best\u00e4lld.  Men anta att du hade en oordnad dataupps\u00e4ttning och du ville utf\u00f6ra bin\u00e4r s\u00f6kning p\u00e5 den.  Vad skulle du g\u00f6ra?<\/p>\n<p>Svaret \u00e4r enkelt: sortera det.  Det finns ett antal sorteringstekniker inom datavetenskap som har unders\u00f6kts v\u00e4l.  En av dessa tekniker du kan b\u00f6rja studera \u00e4r urvalssorteringsalgoritmen, medan vi har massor av guider relaterade till andra omr\u00e5den ocks\u00e5.<\/p>\n<p>    <strong class=\"section-sub-title\">Om f\u00f6rfattaren<\/strong><\/p>\n<p>            <strong class=\"bio-title\">Jerome Davidson (33 artiklar publicerade)<br \/><\/strong><\/p>\n<p>Jerome \u00e4r personalskribent p\u00e5 MakeUseOf.  Han t\u00e4cker artiklar om programmering och Linux.  Han \u00e4r ocks\u00e5 en kryptoentusiast och h\u00e5ller alltid koll p\u00e5 kryptoindustrin.<\/p>\n<p>                            Mer fr\u00e5n Jerome Davidson<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Prenumerera_pa_vart_nyhetsbrev\"><\/span>Prenumerera p\u00e5 v\u00e5rt nyhetsbrev<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>G\u00e5 med i v\u00e5rt nyhetsbrev f\u00f6r tekniska tips, recensioner, free e-b\u00f6cker och exklusiva erbjudanden!<\/p>\n<p>Klicka h\u00e4r f\u00f6r att prenumerera<\/p>\n<\/p><\/div>\n  <div id=\"ez-toc-container\" class=\"ez-toc-v2_0_88 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/blogging-techies.com\/sw\/linjara-och-binara-sokalgoritmer-forklaras\/#Linjara_sokalgoritmer\" >Linj\u00e4ra s\u00f6kalgoritmer<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/blogging-techies.com\/sw\/linjara-och-binara-sokalgoritmer-forklaras\/#Algoritmanalys\" >Algoritmanalys<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/blogging-techies.com\/sw\/linjara-och-binara-sokalgoritmer-forklaras\/#Modifierad_linjar_sokning\" >Modifierad linj\u00e4r s\u00f6kning<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/blogging-techies.com\/sw\/linjara-och-binara-sokalgoritmer-forklaras\/#Binara_sokalgoritmer\" >Bin\u00e4ra s\u00f6kalgoritmer<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/blogging-techies.com\/sw\/linjara-och-binara-sokalgoritmer-forklaras\/#Algoritmanalys-2\" >Algoritmanalys<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/blogging-techies.com\/sw\/linjara-och-binara-sokalgoritmer-forklaras\/#Gar_vidare_till_sortering\" >G\u00e5r vidare till sortering<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/blogging-techies.com\/sw\/linjara-och-binara-sokalgoritmer-forklaras\/#Prenumerera_pa_vart_nyhetsbrev\" >Prenumerera p\u00e5 v\u00e5rt nyhetsbrev<\/a><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n ","protected":false},"excerpt":{"rendered":"<p>M\u00f6jligheten att s\u00f6ka efter vissa data \u00e4r en viktig aspekt av datavetenskap. S\u00f6kalgoritmer anv\u00e4nds f\u00f6r att leta efter ett visst objekt i en datam\u00e4ngd. Algoritmer returnerar ett booleskt resultat (sant eller falskt) till en s\u00f6kfr\u00e5ga. De kan ocks\u00e5 modifieras f\u00f6r att ge den relativa positionen f\u00f6r det hittade v\u00e4rdet. F\u00f6r den h\u00e4r artikeln kommer algoritmerna [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":91770,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[5],"tags":[42931,28177,41523,26,45347],"class_list":["post-91769","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bloggar","tag-binara","tag-forklaras","tag-linjara","tag-och","tag-sokalgoritmer"],"_links":{"self":[{"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/posts\/91769","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/comments?post=91769"}],"version-history":[{"count":0,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/posts\/91769\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/media\/91770"}],"wp:attachment":[{"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/media?parent=91769"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/categories?post=91769"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogging-techies.com\/sw\/wp-json\/wp\/v2\/tags?post=91769"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}