資料結構和演算法是電腦科學中最重要的課程,作為一名google的軟體工程師,我經常看到一些求職者或剛畢業的學生,他們對於資料結構和演算法的學習是遠遠不夠的。這不是說他們看的書是有問題的,或教授們教錯了內容,而是學生對這個課程的理解是不到位的。
紮實掌握資料結構和演算法的關鍵並不是要對每一種資料結構和它的子形式都做詳盡的調查,然後記住它們的時間複雜度和空間複雜度。記住這些看起來很棒,也很吸引人,但說實話,你在實際中很少會用到它們。不管怎樣,在你的職業生涯中都不會讓你實現乙個紅黑樹結點刪除的演算法,但是,你必須要做到而且輕鬆的發現在什麼時候你需要用二叉搜尋樹來解決問題,這個是你經常要用到的技能。
所以,停止背誦那些沒用的東西吧,從現在開始學好下面這兩件基本並且重要的事情:
1.形象化資料結構。直觀的理解某種資料結構是什麼樣的,使用起來是什麼樣的,在抽象和實際的記憶體中是如何儲存的。這是一件單獨的並且很重要的事情,從最簡單的棧和佇列到很複雜的平衡樹。你可以把它們畫出來,直觀地展現在你腦海裡,無論你用什麼方式,最重要的就是你要直觀地去理解。
2.知道在自己的**中何時,並如何去使用這些不同的資料結構和演算法。這一點對於學生來說可能有點難,因為在他們的作業中不需要思考這些。沒有關係,你以後會意識到如果你不參加乙個實際的專案,你就永遠不會理解資料結構,你也不會發現雜湊演算法是你解決效能問題的方法。但是,即使是學生,你也應該學習一些實用性強的內容,比如什麼時候用雜湊表?什麼時候用樹結構?什麼時候最小堆是最好的解決方案?
在google面試時,我會問乙個可以把二叉搜尋樹作為潛在答案的問題,乙個較好的回答可以在幾分鐘後就可以想到二叉搜尋樹,並順著它用10-15分鐘去解決那些我設定的問題,最終得出答案。但是有一次,我遇到了乙個更優秀的面試者,他很形象地理解了樹的概念,可以直觀地把我的問題展現出來,他可能會被演算法精確的複雜度卡住,但是他可以一直在解決問題,因為他做到了把「樹結構」直觀的展現出來。他最終也得到了這個職位。
如何學好資料結構?
一 氣泡排序 演算法步驟 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。二 選擇排...
學好資料結構的重要性
個人認為資料結構是程式設計最重要的基本功沒有之一!學了順序表和煉表,你就知道,在查詢操作更多的程式中,你應該用順序表 而修改操作更多的程式中,你要使用鍊錶 而單向鍊錶不方便怎麼辦,每次都從頭到尾好麻煩啊,怎麼辦?你這時就會想到雙向鍊錶or迴圈鍊錶。學了棧之後,你就知道,很多涉及後入先出的問題,例如函...
資料結構全攻略 學好資料結構的必經之路
zz 2013 09 16 09 23 380人閱讀收藏 舉報目錄 很多人在學習時一猛子紮進細節裡無法自拔,以至於顧此失彼,丟了西瓜撿了芝麻。這種學習方法特別浪費時間,效率也非常低下,以至於在學習的長河中慘遭淘汰。如果這種人繼續不思進取,那麼在激烈的社會競爭環境中也會慘遭淘汰。在學習時我們不妨先了解...