<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          每個(gè)開(kāi)發(fā)人員都應(yīng)該學(xué)習(xí)的10個(gè)算法,你了解幾個(gè)?

          共 1965字,需瀏覽 4分鐘

           ·

          2022-07-05 18:00

          點(diǎn)擊關(guān)注上方“Stephen”,

          設(shè)為“置頂或星標(biāo)”,第一時(shí)間送達(dá)干貨

          • 原文網(wǎng)址丨h(huán)ttps://dev.to/codesphere/10-algorithms-every-developer-should-learn-3lnm

          • 作者丨Saji Wang

          • 譯者丨w3cschool編程獅-三寶

          • 聲明丨本文翻譯僅用于學(xué)習(xí)交流,如需要轉(zhuǎn)載請(qǐng)注明原文信息以及譯者信息。



          許多有抱負(fù)的開(kāi)發(fā)者似乎都有一個(gè)很大的誤解,認(rèn)為記住標(biāo)準(zhǔn)算法很重要。對(duì)于某些工作面試來(lái)說(shuō)可能是這樣,但這對(duì)成為一名成功的開(kāi)發(fā)人員并不是特別重要。


          那么你在算法課上學(xué)到的東西沒(méi)用嗎?當(dāng)然并非如此。但是最重要的還是算法思考的能力。這樣你不僅可以復(fù)制和使用標(biāo)準(zhǔn)算法,還可以輕松地使用代碼解決開(kāi)發(fā)者遇到的任何問(wèn)題。


          下面匯總了10種算法,有抱負(fù)的開(kāi)發(fā)人員應(yīng)該通過(guò)這些算法來(lái)熟悉算法思維。


          01
          二分法查詢(xún)


          二分法查詢(xún)是任何計(jì)算機(jī)科學(xué)課程中最先要教的內(nèi)容之一。這也許是一個(gè)最簡(jiǎn)單的例子,但可以讓事情的效率成倍提升。


          二分法查詢(xún)包括獲取一個(gè)已排序的數(shù)組,通過(guò)迭代將數(shù)組拆分成兩個(gè)部分,然后將要查詢(xún)的元素與每一班進(jìn)行比較,直到找到該元素。

          02
          冒泡、選擇和插入排序


          排序算法是開(kāi)發(fā)人員應(yīng)該擁有的最基本的工具之一。其中,選擇、冒泡和插入排序是新開(kāi)發(fā)人員最要先學(xué)習(xí)的內(nèi)容。在任何考慮速度的情況下,你也許不會(huì)使用這些算法,但使用它們是對(duì)數(shù)組遍歷和操作的一個(gè)很好的應(yīng)用。


          03
          快速和合并排序


          與第2條一樣,排序算法對(duì)于熟悉數(shù)組非常有用,但快速排序和歸并排序在重要的應(yīng)用中也足夠有效。輕松地實(shí)現(xiàn)這些排序算法,對(duì)于成為一名認(rèn)真的開(kāi)發(fā)人員來(lái)說(shuō)是至關(guān)重要的。

          04
          霍夫曼編碼


          霍夫曼編碼是現(xiàn)代文本壓縮的基礎(chǔ)。它的工作原理是考慮不同角色在文本中出現(xiàn)的頻率,并基于這種頻率將它們組織成一棵樹(shù)。




          05
          廣度優(yōu)先搜索


          樹(shù)是開(kāi)發(fā)人員使用的許多算法和軟件的核心。因此,了解基本的樹(shù)遍歷是有抱負(fù)的開(kāi)發(fā)人員的首要任務(wù)。

          廣度優(yōu)先搜索(BFS)通過(guò)逐級(jí)探索樹(shù),直到找到目標(biāo)節(jié)點(diǎn)。因?yàn)樗_實(shí)經(jīng)歷了每一個(gè)節(jié)點(diǎn),所以它肯定能找到解決方法



          06
          深度優(yōu)先搜索


          深度優(yōu)先搜索(DFS)是在樹(shù)中查找元素的而另一種方法。它不是逐層逐級(jí)向下工作,而是逐個(gè)分支搜索樹(shù)分支。


          現(xiàn)在假設(shè)它沒(méi)有無(wú)限擴(kuò)展的分支,DFS同樣總是有效的。實(shí)現(xiàn)這兩種搜索算法并不是特別復(fù)雜,但非常重要的是學(xué)會(huì)何時(shí)使用其中一種算法。很多軟件設(shè)計(jì)都是能夠理解你正在處理的信息的結(jié)構(gòu),并選擇適合該結(jié)構(gòu)的算法。



          07
          梯度下降法


          對(duì)于很多開(kāi)發(fā)人員來(lái)說(shuō),梯度下降法不一定用得到。但是,如果你使用回歸或機(jī)器學(xué)習(xí)來(lái)接觸任何東西,那么梯度下降法將成為你工作的核心。


          梯度下降法是一種使用微積分優(yōu)化函數(shù)的方法。在回歸和機(jī)器學(xué)習(xí)的背景下,這意味著找到能夠最大限度地減少預(yù)測(cè)算法中的誤差的特定值。雖然和其他很多算法相比,它涉及到更多的數(shù)學(xué)問(wèn)題,但如果你要處理大量的數(shù)據(jù)和預(yù)測(cè),了解梯度下降是如何工作的是非常重要的。



          08
          Dijkstra算法


          開(kāi)發(fā)者要處理的另一個(gè)非常重要的問(wèn)題是尋徑。圖被證明是一種非常通用的方法,用來(lái)描述各種涉及不同對(duì)象網(wǎng)絡(luò)的問(wèn)題。


          Dijkstra算法是一種尋找圖中兩個(gè)節(jié)點(diǎn)之間最快路徑的方法。它是大多數(shù)尋徑工作的基礎(chǔ),并被用于從人工智能到游戲設(shè)計(jì)等領(lǐng)域。


          09
          Diffie-Hellman密鑰轉(zhuǎn)換


          Diffie-Hellman密鑰交換很好地介紹了密碼學(xué)的工作原理。更具體地說(shuō),Diffie-Hellman密鑰交換通過(guò)將公鑰和私鑰(有效的長(zhǎng)數(shù)字)結(jié)合起來(lái),在不同方之間傳輸信息時(shí)對(duì)信息進(jìn)行加密。


          即使你不是從事網(wǎng)絡(luò)安全方面的工作,作為一名開(kāi)發(fā)人員,對(duì)加密和安全通信有一定的了解也是非常重要的。此外,盡管Diffie-Helman遠(yuǎn)遠(yuǎn)不是最好的算法,但它非常容易實(shí)現(xiàn),與大多數(shù)其他加密通信方法足夠相似。



          10
          做練習(xí)題


          以上9種算法提供了解決開(kāi)發(fā)人員可能遇到的問(wèn)題原型的方法。然而,現(xiàn)實(shí)情況是,作為開(kāi)發(fā)人員,經(jīng)常會(huì)遇到全新的算法問(wèn)題。這就是為什么發(fā)展用算法解決問(wèn)題的能力比記住任何算法更重要。


          不過(guò)好在有許多可以練習(xí)算法的網(wǎng)站,例如:

          • https://leetcode.com/

          • htpps://www.hackerrank.com/


          在這些網(wǎng)站上,你可以找到困難且令人滿意的算法問(wèn)題并磨練你的技能。


          總結(jié)


          同樣,不是只記住這些算法,就認(rèn)為你就可以突然成為了一個(gè)優(yōu)秀的開(kāi)發(fā)者。軟件工程首先能夠理解問(wèn)題并構(gòu)建解決方案。


          學(xué)習(xí)算法并不重要,因?yàn)槟銓⒉坏貌粸槟阏跇?gòu)建的內(nèi)容里準(zhǔn)確地實(shí)現(xiàn)它們。他們很重要,因?yàn)樗鼈兘虝?huì)你如何解決問(wèn)題。


          以上就是關(guān)于開(kāi)發(fā)人員需要學(xué)習(xí)的10個(gè)算法的全部?jī)?nèi)容。


          END


          關(guān)注 Stephen,一起學(xué)習(xí),一起成長(zhǎng)。


          點(diǎn)“在看”支持下吧


          點(diǎn) 閱讀原文 可優(yōu)惠充值話費(fèi),流量,視頻會(huì)員等。

          瀏覽 37
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产精品视频播放 | 黄色一级一级 | 五月天婷婷丁香花开网 | 日韩 欧美中文字幕第一页在线 | www在线黄色 |