學好資料結構的秘訣
學好資料結構的秘訣
作為計算機專業的一名“老兵”,筆者從事資料結構和演算法的研究已經近20餘年了,在學習的過程中,也會遇到一些問題,但在解決問題時,積累了一些經驗,為了讓讀者在學習資料結構的過程中少走彎路,本節分享一些筆者在學習資料結構與演算法時的一些經驗,希望對讀者的學習有所幫助。
1. 明確資料結構的重要性,樹立學好資料結構的信心
資料結構是電腦科學與技術專業的核心課程,不僅僅涉及計算機硬體的研究範圍,並且與計算機軟體的研究有著更為密切的關係,“資料結構”課程還是作業系統、資料庫原理、編譯原理、人工智慧、演算法設計與分析等課程的基礎。資料結構是計算機專業碩士研究生入學考試的必考科目之一,還是計算機軟體水平考試、等級考試的必考內容之一,資料結構在計算機專業中的重要性不言而喻。
萬事開頭難,學習任何一樣新東西,都是比較困難的。對於初學者來說,資料結構的確是一門不容易掌握的專業基礎課,但你一定要樹立學好資料結構的信心,主要困難無非有兩個:一個是資料結構的概念比較抽象,不容易理解;另一個是沒有熟練掌握一門程式設計語言。面對以上困難,只要我們見招拆招,其實也沒有什麼可怕的,不過選擇一本適合自己的參考書是十分有必要的。
2. 熟練掌握程式設計語言,變腐朽為神奇
程式語言是學習資料結構和演算法設計的基礎,很顯然,沒有良好的程式設計語言能力,就不能很好地把演算法用程式設計語言描述出來。演算法思想固然重要,但它最終必須透過程式設計語言去實現,否則演算法對軟體開發人員來說就是毫無意義的。程式開發人員的任務就是要實現這些演算法,將它變成可執行的軟體,因此,學習資料結構與演算法必須熟練掌握好至少一門高+級程式設計語言,如Python 語言、C 語言、Java 語言。程式設計語言和資料結構、演算法的關係就像是畫筆和畫家的思想之間關係一樣,程式設計語言就是畫筆,資料結構、演算法就是畫家的思想,即便畫家的水平很高,如果不會使用畫筆,再美的圖畫也無法給我們展現出來。
3. 結合生活實際,變抽象為具體
資料結構是一項把實際問題抽象化和進行復雜程式設計的工程。它要求學生不僅具備 Python 、 C 、 Java 語言等高+級程式設計語言的基礎,而且還要學會掌握把複雜問題抽象成計算機能夠解決的離散的數學模型的能力。在學習資料結構的過程中,要將各種結構與實際生活結合起來,把抽象的東西具體化,以便理解。例如學到佇列時,很自然就會聯想到火車站售票視窗前面排起的長隊,這支長長的隊伍其實就是佇列的具體化,這樣就會很容易理解關於佇列的概念,如隊頭、隊尾、出隊、入隊等。
4. 多思考,多上機實踐
資料結構既是一門理論性較強的課程,也是一門實踐性很強的課程。特別是對於初學者而言,接觸到的演算法相對較少,編寫演算法還不夠熟練,俗話說“熟能生巧,勤能補拙”,在學習資料結構與演算法時,一方面需要多看有關演算法和資料結構方面的圖書,認真理解其中的演算法思想,多做習題,不斷鞏固自己對一些概念和性質的理解;另一方面,還要自己動手寫演算法,並在計算機上除錯,這樣才能知道演算法思路是否正確,編寫出的演算法是否能夠正確執行,存在哪些錯誤和缺陷,以避免今後再犯類似的錯誤,只有這樣長期堅持下去,自己的演算法和資料結構水平才能快速提高。
有的表面上看是正確的程式,在電腦上執行後才發現隱藏的錯誤,特別是很細微的錯誤,只有多試幾組資料,才知道程式到底是不是正確。因此,對於一個程式或演算法,除了仔細閱讀程式或演算法、判斷是否存在邏輯錯誤外,還需要上機除錯,在可能出錯的地方設定斷點,單步跟蹤除錯程式,觀察各變數的變化情況,才能找到具體哪個地方出了問題。有時,可能僅僅是誤敲了一個符號或把一個變數誤寫成另一個變數,就可能產生意想不到的錯誤結果;還有本來是希望將一個棧中的棧頂元素返回,但是實際上在返回之前已經把該元素刪除,這樣就無法得到正確的輸出結果。這些錯誤往往不容易發現,只有上機除錯才能發現錯誤。因此,在學習資料結構與演算法的時候一定要多上機實踐。透過上機實踐,不僅加深了對理論知識的掌握,還提高了程式語言的應用技巧和除錯水平,這是提高自身綜合演算法能力的過程。
只要能做到以上幾點,選擇一本好的資料結構教材或參考書(最好演算法完全用Python 、Java 或C 語言實現,有完整程式碼),加上讀者的勤奮,學好資料結構自然不在話下。
本文節選自《 Python 程式設計從零開始學(影片教學版) 》,內容釋出獲得作者和出版社授權。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18841117/viewspace-2951384/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 高效儲存的秘訣:bitmap 資料結構在標籤中的應用資料結構
- 資深CCNA大牛披露學習的秘訣
- 好題——數學與資料結構資料結構
- 如何學好資料結構和演算法資料結構演算法
- 快收下這份“資料庫運作實踐”秘製口訣資料庫
- 8.4學好linux的訣竅Linux
- 優思學院|TRIZ解決創新難題的秘訣
- 方案分享:智慧馬桶C位出道的秘訣
- Java併發Map的面試指南:執行緒安全資料結構的奧秘Java面試執行緒資料結構
- 學《資料結構》有感資料結構
- 資料結構學習資料結構
- 絕佳的API設計秘訣 - DZone整合API
- 程式語言成功的秘訣是什麼? -erik
- 免費OA廠商在行業立足的秘訣行業
- 提高無線網路下載速度的秘訣
- 邦芒職場:塑造職場人氣王的秘訣
- 資料結構學習之樹結構資料結構
- 資料結構學習心得資料結構
- Serverless 應用最佳化四則秘訣Server
- 資料結構學習--連結串列資料結構
- 資料結構學習總結--圖資料結構
- 優思學院|成功團隊的十大秘訣,助你事業騰飛!
- 資料結構中常用的數學公式資料結構公式
- 關於資料結構的學習心得資料結構
- 開源/免費的敏捷工具:Scrum團隊的增效秘訣敏捷Scrum
- 不破不立的《天下4》,點出了天下IP經久不衰的秘訣
- 重學資料結構(二、棧)資料結構
- 重學資料結構之棧資料結構
- 重學資料結構(七、圖)資料結構
- 資料結構學習筆記資料結構筆記
- 好資源分享 奈學教育《大資料架構師》大資料架構
- 資料結構之Stack | 讓我們一塊來學習資料結構資料結構
- 資料結構之Queue | 讓我們一塊來學習資料結構資料結構
- 資料結構之Set | 讓我們一塊來學習資料結構資料結構
- javascript的資料結構快速學-連結串列的實現JavaScript資料結構
- 寫好軟體的訣竅
- 這些技巧你知道嗎?macOS的Fn鍵實用秘訣Mac
- vivo遊戲中心低程式碼平臺的提效秘訣遊戲