回覆列表
  • 1 # Java進階架構師

    為了裝的高大上一點,那就推薦這個吧:《Data Structures For Game Programmers》,算是非科班最好的選擇了,當然其實都差不多,關鍵是須有要完整的例項,然後可以自己開始動手寫。也可以看看清華大學嚴蔚民的《資料結構》

  • 2 # 計算機程式設計的全部事兒

    《大話資料結構》、《資料結構與演算法》、《演算法導論》。學習計算機方面的東西,建議看外國大牛寫的書,國內的人寫的書總體感覺偏簡略。

  • 3 # 嵌入式IOT圈

    市面上的資料結構書籍比較多,怎麼選擇才是關鍵,我個人推薦程傑老師的《大話資料結構》具有多年的程式設計師經驗,寫的也很通俗易懂,我自己也在看,其次是極客時間的【資料結構】專欄也寫的很好,如果需要我可以免費提供給你。

  • 4 # 大學生程式設計指南

    計科專業從事軟體開發多年,在學校裡面資料結構這個課程開設過,基本上第一次學習資料結構C語言版本腦子幾乎都是暈乎的,因為搞不懂指標來回指向,後來跟一個前輩請教如何學這東西,先把指標徹底搞明白,然後再學習資料模型,最後一步直接用C語言程式碼來實現,開始不要嘗試著都能給搞明白,基礎不夠很難理解透徹,於是專門拿出時間把C語言的指標研究了一遍,由於當時不像現在的網際網路上資料那麼多, 只能在網上找點抽象的例子進行研究,對指標徹底的瞭解是看了林銳博士寫的高質量C/C++程式設計,裡面對指標的介紹特別深刻,從此指標也就慢慢理解了。

    掌握了指標之後再去搞資料結構,想比之前已經輕鬆太多了,也不要太著急直接去嘗試搞程式碼先把資料模型搞明白,資料模型是連線資料的橋樑,連結串列,佇列,棧,二叉樹等等概念,然後瞭解每個資料模型的資料結構,以及需要做的動作,在沒寫程式碼之前先把這些資料模型要做什麼事情搞清楚,然後才去嘗試寫程式碼,一般來講第一個模型寫的比較費勁後面就以次類推了,萬事開頭難,資料結構書本主要分為多種程式語言的,有C語言,C++,java版本資料機構,對於這類的書籍講解差異不是很大,沒有必要太過追求那本書,主要是還是模型思想和程式碼實現.

    學習資料結構有什麼用?

    現在就拿自己從事的行業來講,C/C++,資料結構算是基本功,設計一個功能模組除了選擇程式語言之外剩下的就是構造資料模型,在C語言裡面叫結構體,在C++裡面屬於類,如何設計有時候就會藉助資料結構裡面的基本模型,常見的程式設計模型裡面佇列和連結串列用的比較多,一般的設計模型中都會涉及到訊息佇列,就是典型的一種資料模型,如果有資料結構基礎這些東西理解起來就非常快,所謂的程式設計基礎除了基本的程式設計語法基礎還有資料模型等基礎。

    學習資料結構也非常有助於算法理解,再複雜的演算法也是由基礎的資料結構演算法構造起來的,任何一種演算法也不是什麼空中樓閣都是無數個小的基礎演算法堆積起來的,沒有這些基礎直接從事演算法的學習,幾乎是不太可能的事情。懂得常見的資料結構模型,更容易看懂大型的專案的程式碼,拿到一份原始碼首先要梳理的是功能列表以及裡面資料內容的傳遞,懂資料結構對於理解框架非常有好處,要玩大型的專案,先從看懂基礎的程式碼開始,研究程式碼需要一定的基礎,有了模型概念對於有框架的程式碼研究起來快一些。

    在剛入行的時候經常聽到老程式設計師說到,一個新的功能模組只要資料結構都梳理清楚了,就可以考慮寫程式碼了,不要看一個功能模組裡面一個小小的類或者結構體,裡面每個變數可能都會串聯著一串功能,所以一個結構體設計完畢了,基本功能模組也就設計清楚了。

    很多初學者都有這麼一個不好的習慣,一邊寫著程式碼程式碼一邊設計思路,這是程式設計大忌,程式設計首先要思路清晰,程式碼只是把你的思路展示出來,具體的實現好壞就要看基本功了,同樣的功能不同的設計人員設計出來會有截然不同的效果,在性質以及實現效果上都有所差異,本質來講是實力的差異,所以寫程式碼的就是為了實現既定的思路,資料結構是設計結構體或者類的基本依據。

  • 5 # KaiSeRBurNInG

    1,《Algorithms》

    中文名《演算法》第四版,Robert Sedgewick

    2,中文名《Java/C++程式設計 基礎 程式設計抽象 演算法策略》

    如果你不是為了應試,不要看國內資料結構教材。如果一定要看一本(前提是你是自學而不是應試),那就清華大學鄧俊輝老師的資料結構,配合學堂在線上他的課程

    如果是應試而且是408考研,那麼首推李春葆的資料結構

  • 6 # 人民郵電出版社

    資料結構是計算機儲存、組織資料的方式,包括陣列、連結串列、棧、二叉樹、雜湊表等。演算法是解決問題的方案,是為資料結構服務的,演算法能對資料結構中的資料進行各種處理,比如查詢陣列中的資料,或對其進行排序等等。

    有很多程式設計師能夠非常熟練地運用程式語言,但是對於自己開發的應用的效率和未來的改進方向並沒有非常清晰的認識和規劃,這往往是因為沒有掌握好資料結構和演算法的知識,不能從全域性角度把握問題的解決和最佳化方案。因此,對於程式設計師來說,學習資料結構和演算法是非常有用的。

    對資料結構和演算法的應用隨處可見

    應用資料結構和演算法可以很高效地解決常見問題。

    我們買票排隊,應用的資料結構就是佇列,特點是先進先出;物流裝車應用的資料結構就是棧,特點是先進後出(最先被裝到車上的貨物最後才能取出來)。

    當你開啟一個音樂APP時,你可以將歌曲按照曲名或是歌手排序,這就是排序演算法在實際中的應用。

    這些看上去司空見慣的應用或者功能,其實都用到了資料結構和演算法的思想。

    資料結構和演算法會對問題解決的質量和效能產生影響

    解決一個問題有很多種方法,但有些方法會比其他方法更好,學習資料結構和演算法就是學習高質量的解決方案。

    假設你要登入一個網站,該網站必須核實你是否有其賬戶,因此必須在其資料庫中查詢你的使用者名稱。如果你的使用者名稱為KarImageddon,該網站可從以A打頭的部分開始查詢(順序查詢),但更合乎邏輯的做法是從中間開始查詢(二分查詢)。

    如果這個網站的註冊使用者只有幾百個,使用者或許感受不到兩種查詢方式所花費時間的差異,但如果註冊使用者的數量達到了幾千萬甚至是幾個億,不同查詢演算法的效率對網站響應速度的影響就非常明顯了。

    3.資料結構和演算法思想是程式的靈魂

    資料結構和演算法雖然看上去很枯燥,但它們其實是計算機科學的核心技術和原理。著名的瑞士計算機科學家沃思(N.Wirth)教授曾提出:

    演算法 + 資料結構=程式

    程式設計的本質是演算法,而演算法的本質是解決問題。程式設計的實質是對實際問題設計/選擇好的資料結構和好的演算法。

    對任何專業技術人員來說,理解資料結構和演算法都非常重要。Java、Python、C/C++、JavaScript、PHP、R語言等各種程式語言不斷更新迭代,但經典的資料結構和演算法思想卻歷久彌新,指導著程式設計師們針對問題的特點和資料的規模設計出合適的解決方案。

    基於上述原因,資料結構和演算法也是很多網際網路公司面試的必考題目。對任何事都具備邏輯思維的人能夠編寫非常優秀的程式碼,而缺乏這種邏輯能力的人無論多麼努力學習‘程式設計’也無濟於事。

    資料結構和演算法不僅是程式設計師的必學知識,也可以幫助普通人解決問題,培養高效、快速安排資源和解決問題的能力。在這裡推薦一本非常有趣的演算法入門書《演算法圖解》,這本書使用了豐富的插圖和示例,對應用廣泛的資料結構和演算法原理進行了生動形象地闡述,可以幫助讀者快速地理解以往覺得晦澀難懂的專業概念,不僅適合計算機專業的學生入門,也適合非專業的讀者用來學習解決問題的思路。

  • 中秋節和大豐收的關聯?
  • 青少年兒童短跑步頻如何提高?