算法對於程式設計師而言,到底有多重要,這已經是一個老生常談的話題了。我看過很多有潛力且非常努力的程式設計師,在進階高級工程師或架構師的路上,栽在了「算法」上,說實話,我並不意外。如果說得功利和實際一些,我覺得學習算法的核心原因有 2 個:
一,算法是你進大廠的敲門磚。這你可能會疑問,明明工作中用到算法的情況並不多,為什麼大廠都要考,而且還是 Hard 模式?其實,你覺得工作中不會用到算法,只不過是你沒接觸到,否則你隨便打開一個開源項目,看看裡面是不是有算法的應用場景。最重要的是,掌握算法,能讓你寫出更嚴謹的代碼。要知道,你的代碼就是你名片,它是衡量程式設計師基礎素養的直接標準,代碼寫得好,才能在團隊中脫穎而出,獲得更大的發展空間。有些人費心費力寫出來的代碼,Leader 說時間複雜度和空間複雜度太高,一鍵刪 10 行。你覺得這樣的程式設計師,大廠面試會通過嗎?
二,算法幫你在工作中更快的彎道超車。在 IT 企業中流傳著一句老話:大公司造輪子,小公司用輪子。越是大型的網際網路公司,自己造的輪子越多。雖然大多數人是面向業務編程,也確實能夠使用現有的語言、框架、作業系統、編譯環境來滿足業務需求,就算不懂算法也能完成工作。但實際上,在高可用架構、人工智慧、雲原生應用等技術發展飛速的今天,公司更願意選擇底層能力更優秀、更懂算法的人才,因為懂算法的人可以快速掌握新技術的核心要領,並跟上公司創新的節奏。
要知道,快速掌握行業知識的能力,是我們必須要具備的核心競爭力。這都是建立在擁有大量專業基礎知識之上。有人會說,我明白算法很重要,但一直下定不了決心去攻克,始終停留在數組、鍊表、跳表這些基礎的數據結構上,面對算法題,完全找不到思路,學了忘,忘了學,怎麼才算學會?老實講,學習任何知識,除了對基本知識點的理解,都十分需要
學習路徑 + 高手指點 + 大量練習。我的方法是,針對每個算法搭配一些經典的面試題,詳細講解它能解決的問題、算法流程、優化拓展,以及它所需要的數據結構基礎。另外,還會講到涉及非常多的公式推導的「時間複雜度」,並且我還會帶你從 0 到 1 一起封裝一個線程池,讓你體會程序設計的全過程。我和極客時間合作推出了《常用算法 25 講》,原本的定價是 99 元,但為了讓更多的人去願意了解算法、掌握算法,我特意為大家爭取到了【
完全免費】的福利。你點擊圖片後分享連結給好友,只要有一位好友成功領取,你也將免費獲得本專欄!
我是胡光,前百度高級算法研發工程師。在百度期間,我開發了部門內部的第一版推理引擎,並順利在人物關係推理等應用場景中落地實施。我與算法結緣很早,高中時靠算法競賽的保送名額上了大學。大學期間,參加了 ACM 國際大學生程序設計大賽,拿到了亞洲區金牌,進過兩次 ACM 全球總決賽。算法競賽經驗豐富,並在競賽過程中形成了自己的方法論。2019 年在極客時間開設了《人人都能學會的編程入門課》,時隔一年,我又帶來了《常用算法 25 講》。作為一名教育行業的創業者,我非常希望能向和我一樣熱愛算法、熱愛編程的你,分享我的經驗,並幫助你們的成長。我特意選擇了在實際工作中經常會被用到的三類算法,分別是排序算法、查找算法與搜索算法。希望能帶你學習最常用、最實用的算法知識,掌握相關算法的高效學習方法,讓你從不懂、不了解算法,到掌握算法,並擁有自學算法的能力。
我會從快速排序算法、快排優化、快速選擇算法,講到堆排序、歸併排序,以及由這些排序延伸出來的一些趣味算法。我希望你從中學會的不是單一的算法,而是這些排序算法中所映射出來的思維方式。
從工作中最常用的數據結構:
紅黑樹與哈希表 講起。我會從最基礎的排序二叉樹入手,並對網上現有的紅黑樹代碼做了優化,幫助你大幅度降低了紅黑樹的編碼學習難度;關於哈希表,我會重點帶你學習哈希表的映射思想,也就是其中的哈希操作。
我將帶你學習如何求解數獨遊戲、2-Sum 問題、計算 sqrt,並分享一種比系統自帶的 sqrt 更快的函數。對了,我還為你準備了一個有挑戰的畢業設計,成功分享專欄後即可查看具體題目。
本專欄與往期付費技術專欄最大的不同,就是「
完全免費」 !只要你點擊海報,進入【
贈一得一】分享頁面,將連結轉發給你的好友,只要有一人成功領取後,你也將免費獲得此專欄!
成功領取後,可通過「極客時間 App」- 我的 - 我的課程,學習已訂閱的專欄。