不少程序員對數據結構和算法並不熟悉,以爲在平常工做中用處並不大並且還比較難學,有時間學數據結構與算法,還不如對框架和Api熟練來的實在。確實,做爲業務開發人員不懂算法仍然能夠很快很好地完成開發任務,這是由於大部分開發語言底層都基於基本數據結構幫咱們封裝好了,咱們拿來就能夠用,並且性能也比較好。可是即使不須要本身去寫底層框架,若是知道更多原理也能知道哪一種數據結構是適合什麼樣的場景。隨着近幾年大數據、AI的興起,特別是大公司愈來愈重視算法工程師和大數據處理技術的積累,沒有紮實的數據結構和算法基礎,程序員很容易遇到天花板。程序員
數據結構是計算機存儲、組織數據的方式。數據結構是指相互之間存在一種或多種特定關係的數據元素的集合。(摘自百度百科)面試
好比:圖書館裏書籍按照計算機、醫學、經濟學等不一樣學科分類,將不一樣分類分別放在不一樣的書架,而後計算機類書架裏又有計算機網絡、操做系統、編程語言……醫學類裏有臨牀醫學、解剖等,這種按不一樣分類擺放的方式就是書籍這類數據存放的結構。算法
算法(Algorithm)是指解題方案的準確而完整的描述,是一系列解決問題的清晰指令,算法表明着用系統的方法描述解決問題的策略機制。(摘自百度百科)編程
好比:我要查找《Java從入門到放棄》這本書,有不少種方法:網絡
這兩種方法就是兩種不一樣的算法。數據結構
數據結構是算法實現的基礎,算法老是要依賴於某種數據結構來實現的。脫離了數據結構只談算法沒有實際意義,這就是爲何談算法的時候總得要有個具體的數據結構做爲基礎。框架