學好數據結構和算法 —— 開篇

不少程序員對數據結構和算法並不熟悉,以爲在平常工做中用處並不大並且還比較難學,有時間學數據結構與算法,還不如對框架和Api熟練來的實在。確實,做爲業務開發人員不懂算法仍然能夠很快很好地完成開發任務,這是由於大部分開發語言底層都基於基本數據結構幫咱們封裝好了,咱們拿來就能夠用,並且性能也比較好。可是即使不須要本身去寫底層框架,若是知道更多原理也能知道哪一種數據結構是適合什麼樣的場景。隨着近幾年大數據、AI的興起,特別是大公司愈來愈重視算法工程師和大數據處理技術的積累,沒有紮實的數據結構和算法基礎,程序員很容易遇到天花板。程序員

一、什麼是數據結構和算法

數據結構

數據結構是計算機存儲、組織數據的方式。數據結構是指相互之間存在一種或多種特定關係的數據元素的集合。(摘自百度百科)面試

好比:圖書館裏書籍按照計算機、醫學、經濟學等不一樣學科分類,將不一樣分類分別放在不一樣的書架,而後計算機類書架裏又有計算機網絡、操做系統、編程語言……醫學類裏有臨牀醫學、解剖等,這種按不一樣分類擺放的方式就是書籍這類數據存放的結構。算法

算法

算法(Algorithm)是指解題方案的準確而完整的描述,是一系列解決問題的清晰指令,算法表明着用系統的方法描述解決問題的策略機制。(摘自百度百科)編程

好比:我要查找《Java從入門到放棄》這本書,有不少種方法:網絡

  1. 一個個書架找過去,直到找到了爲止;
  2. 先按計算機大類找,再從計算機下面的編程語言裏去找

這兩種方法就是兩種不一樣的算法。數據結構

數據結構是算法實現的基礎,算法老是要依賴於某種數據結構來實現的。脫離了數據結構只談算法沒有實際意義,這就是爲何談算法的時候總得要有個具體的數據結構做爲基礎。框架

二、爲何要學數據結構和算法

  • 算法解決的是少和快的問題,怎麼樣使用最少的空間和最快的速度來處理數據,特別是海量數據時代,如何高效快速地進行數據處理顯得特別重要,這也是BAT大廠注重算法的緣由;
  • 不少框架使用了不少的數據結構和算法的設計思想,針對不一樣場景有不一樣的優化,若是不懂數據結構和算法就很難理解它的設計思想;
  • 算法是不少大廠面試必備技能;
  • 若是不懂數據結構和算法就沒有時間複雜度和空間複雜度的概念,也就不知道怎麼評估一段代碼性能;
  • 運用合適的數據結構和算法能夠寫出性能高的代碼,而且能夠預估代碼的性能瓶頸;
  • 學習算法能夠鍛鍊和豐富邏輯思惟,寫出逼格更高的代碼
  • ……

三、數據結構和算法學什麼

一、學習內容

二、掌握好複雜度分析和基本數據結構和算法,打好基礎

三、多思考多動手多練習

相關文章
相關標籤/搜索