在這一系列文章中,我將分享我的學習歷程,涉及在學術環境和大型科技公司中廣泛討論的兩個主題:演算法和資料結構。儘管這些主題乍看之下似乎令人畏懼,特別是對於像我這樣由於其他職業挑戰而在整個職業生涯中沒有機會深入研究這些主題的人,但我的目標是讓它們易於理解。
我將從最基本的概念開始,然後轉向更高級的主題,創建我的演變記錄。我希望這些帖子對處於同一學習道路上的任何人也有用。為了更深入研究,我將結合 LeetCode 等平台上的實際挑戰,以及每個演算法背後的理論的閱讀和討論。我為這次旅程選擇的程式語言是 JavaScript。
為什麼學習演算法值得?
演算法和資料結構是任何軟體建構的基本組成部分。其中許多是多年研究的成果,旨在有效解決複雜問題,並且可以應用於 IT 的不同領域,例如 Web 開發、後端、人工智慧等。理解演算法是編寫最佳化程式碼的好方法。此外,對這些概念的掌握情況通常是在大型科技公司的技術面試中進行評估,這對於任何想要加入這些巨頭之一的人來說都是很有趣的。
什麼是演算法?
演算法是解決問題的指令集。我在大學裡聽到的一個常見的比喻是蛋糕配方:你按照一系列步驟得到最終的結果,那就是蛋糕。
根據Introduction to Algorithms一書,它解釋了演算法將一個值或一組值作為輸入,並產生一個值或一組值作為輸出。一個針對開發的更實際的例子是:假設您有一個雜亂的數字列表,您需要將它們從小到大排序。在這種情況下,無序列表是輸入,演算法是重新排列數字的步驟序列,產生有序列表作為輸出。
什麼是資料結構?
資料結構是組織和儲存資訊的方式,以便我們可以在方便時存取和使用它。如果我們考慮一個書架,我們可以看到書籍可以透過多種方式組織:按主題、作者、字母順序、顏色等。我們選擇組織它們的方式直接影響我們找到特定書籍的難易程度。
當我們在本系列中繼續前進時,我的目的是揭開這些主題的神秘面紗,並為我自己和關注我的帖子的任何人建立堅實的知識基礎。掌握演算法和資料結構的過程可能充滿挑戰,但透過定期練習和好奇心,我相信我們都可以克服最初的困難,達到滿足市場要求的熟練程度,並成為更有效率、更有能力的開發人員。以最佳方式解決問題。
我希望這種經驗交流能豐富我的學習,就像您的學習一樣。而且,除了富有成效之外,這個過程甚至可以很有趣。請隨意提出主題、新工具、學習材料甚至其他挑戰。我很樂意和你一起學習!
參考
Cormen, T. H.、Leiserson, C. E.、Rivest, R. L. 與 Stein, C. (2009)。演算法簡介(第三版)。麻省理工學院出版社。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3