<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>

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

          共 2103字,需瀏覽 5分鐘

           ·

          2022-06-21 14:44


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

          • 作者丨Saji Wang

          • 譯者丨w3cschool編程獅-三寶

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



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


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


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


          01
          二分法查詢


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


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

          02
          冒泡、選擇和插入排序


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


          03
          快速和合并排序


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

          04
          霍夫曼編碼


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




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


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

          廣度優(yōu)先搜索(BFS)通過逐級探索樹,直到找到目標(biāo)節(jié)點。因為它確實經(jīng)歷了每一個節(jié)點,所以它肯定能找到解決方法



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


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


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



          07
          梯度下降法


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


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



          08
          Dijkstra算法


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


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


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


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


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



          10
          做練習(xí)題


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


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

          • https://leetcode.com/

          • htpps://www.hackerrank.com/


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


          總結(jié)



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


          學(xué)習(xí)算法并不重要,因為你將不得不為你正在構(gòu)建的內(nèi)容里準(zhǔn)確地實現(xiàn)它們。他們很重要,因為它們教會你如何解決問題。


          以上就是關(guān)于開發(fā)人員需要學(xué)習(xí)的10個算法的全部內(nèi)容。你認(rèn)為學(xué)習(xí)算法可以幫助提升編程實力嗎?在評論區(qū)留下你的看法!這里是w3cschool編程獅,點擊關(guān)注我們,閱讀更多的IT資訊和技術(shù)干貨~

          課程推薦

          課程:《熱門編程語言應(yīng)用前景》

          課程介紹:想要學(xué)習(xí)編程,不知道要學(xué)什么,從哪里開始學(xué)?本課程將帶你了解當(dāng)下熱門的編程語言的應(yīng)用前景,讓學(xué)習(xí)有目的、有方向。

          課程特點:本課程以視頻講解呈現(xiàn),詳細(xì)介紹各個熱門語言。同時,課程是免費的,主要幫助想要學(xué)習(xí)編程的朋友們快速了解。

          學(xué)習(xí)方式:掃碼 ↓ 立即前往課程界面~

          點擊閱讀原文,立即前往課程界面~
          瀏覽 35
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  五月天成人在线免费视频 | 成人男人的天堂视频在线观看 | 亚洲精品无码激情AV在线观看 | 蜜臀久久精品久久久久消防站 | 青草娱乐视频在线观看 |