有人會問前端須要會數據結構嗎,前端須要會算法嗎?這些針對內存和cpu的傢伙對我來講有什麼用呢?若是你問一個前端工程獅,工做中遇到遇到的數據結構問題,他一臉矇蔽,「老子不用數據結構,照樣能寫出來老闆須要的代碼。學數據結構有求用」。若是隻作前端的話數據結構確實沒用。鏈表,散列表,隊列,棧。前端最多弄個數組(var ary=[]);說排序算法更是扯淡,數組自帶排序函數sort,方便的很。更別提什麼二叉樹,競賽樹,紅黑樹,AVL樹,還有圖,通通沒用。因此後端老是嘲笑前端,這是一羣作ui的傢伙,根本就不懂程序。也許你會問:做爲前端工程師真的不用懂數據結構嗎?確實不用懂數據結構,假如你知道了鏈表,散列,字典,有用嗎?估計這輩子也用不上,v8內存自動回收,注意內存泄漏就行,而且js只有object,和arry,function,null,number,symbel,bool,string。上帝根本就沒有給你機會使用這些牛逼的東西(其實後端工程師也不必定怎麼懂)。前端
既然這樣,前端工程師會想:那算法也沒用了,算法以數據結構爲基礎,優化程序的時間或者空間複雜度的。片面,其實算法仍是頗有用的,這個東西永遠都不會過期,就是將一個問題的解決轉化爲數學表達,在轉化爲電腦程序,這多是複製粘貼程序員和資深程序員的區別了。而且在工做中也是很常見的。例如:jquery
jquery有一樹型插件,須要的數據結構是這樣的,程序員
{
name:"top",
value:"bumen",
children:[{
name:"son",
value:'kankan',
children:[{
name:"sun"
value:"dsfasd"
},{算法
}]
},{數據庫
}]
}後端
但是後端查詢數據庫,返回的是對象數組結構是這樣的:數組
[{name:"asdfasd",value:"asdfsadf",children:"indexwe"},{name:'',value:"",children:none}];前端工程師
這時你不得不轉化數據,這只是一個簡單的例子,因此前端工程師是要懂算法思想的。算法思想有哪些呢?數據結構
大概分爲一下5種,貪婪算法,分而治之,動態規劃,回溯法,以及分支界定法。下一篇文章開始講解。函數