日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java架构师进阶之独孤九剑:数据结构以及书籍推荐

發布時間:2024/7/5 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java架构师进阶之独孤九剑:数据结构以及书籍推荐 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這是整個java架構師連載系列,分為9大步驟,我們現在還在第一個步驟:程序設計和開發->數據結構與算法。

如果說 Java 是自動檔轎車,C 就是手動檔吉普。數據結構呢?是變速箱的工作原理,

你完全可以不知道變速箱怎樣工作,就把自動檔的車子從 A 開到 B,而且未必就比懂得的人慢。寫程序這件事,和開車一樣,經驗可以起到很大作用,但如果你不知道底層是怎么工作的,就永遠只能開車,既不會修車,也不能造車。如果你對這兩件事都不感興趣也就罷了,數據結構懂得用就好。但若你此生在編程領域還有點更高的追求,數據結構是繞不開的課題。

不想學好基礎的程序員很難進階到架構師。

為什么要學習數據結構

學習數據結構,并不僅僅是學習其中現成的那些隊列,堆棧,二叉樹,圖等經典結構, 也不僅僅是學習其中的那些快速排序、冒泡排序等算法。

更重要的是你要學習一種思想:如何把現實問題轉化為計算機語言的表示。

當你用著java里面的容器類很爽的時候,你有沒有想過,怎么ArrayList就像一個無限擴充的數組,也好像鏈表之類的。好用嗎?好用,這就是數據結構的用處,只不過你在不知不覺中使用了。

校招會發現大公司考的就是這類的題目,剛開始不會考你java的線程,容器,多態什么的特性,考的就是你的基礎,你的這些基礎扎實,學其他不是問題。

用于現實世界的存儲,我們使用的工具和建模。每種數據結構有自己的優點和缺點,想想如果Google的數據用的是數組的存儲,我們還能方便地查詢到所需要的數據嗎。

而算法,在這么多的數據中如何做到最快的插入,查找,刪除,也是在追求更快。

常用的數據結構

鏈表

鏈表是一種由節點(Node)組成的線性數據集合,每個節點通過指針指向下一個節點。它是一種由節點組成,并能用于表示序列的數據結構。

單鏈表:每個節點僅指向下一個節點,最后一個節點指向空(null)。

雙鏈表:每個節點有兩個指針p,n。p指向前一個節點,n指向下一個節點;最后一個節點指向空。

循環鏈表:每個節點指向下一個節點,最后一個節點指向第一個節點。

時間復雜度:

索引:O(n)

查找:O(n)

插入:O(1)

刪除:O(1)

棧是一個元素集合,支持兩個基本操作:push用于將元素壓入棧,pop用于刪除棧頂元素。

后進先出的數據結構(Last In First Out, LIFO)

時間復雜度

索引:O(n)

查找:O(n)

插入:O(1)

刪除:O(1)

隊列

隊列是一個元素集合,支持兩種基本操作:enqueue 用于添加一個元素到隊列,dequeue 用于刪除隊列中的一個元素。

先進先出的數據結構(First In First Out, FIFO)。

時間復雜度

索引:O(n)

查找:O(n)

插入:O(1)

刪除:O(1)

樹是無向、聯通的無環圖。

二叉樹

二叉樹是一個樹形數據結構,每個節點最多可以有兩個子節點,稱為左子節點和右子節點。

滿二叉樹(Full Tree):二叉樹中的每個節點有 0 或者 2 個子節點。

完美二叉樹(Perfect Binary):二叉樹中的每個節點有兩個子節點,并且所有的葉子節點的深度是一樣的。

完全二叉樹:二叉樹中除最后一層外其他各層的節點數均達到最大值,最后一層的節點都連續集中在最左邊。

二叉查找樹

二叉查找樹(BST)是一種二叉樹。其任何節點的值都大于等于左子樹中的值,小于等于右子樹中的值。

時間復雜度

索引:O(log(n))

查找:O(log(n))

插入:O(log(n))

刪除:O(log(n))

數據結構和算法書籍推薦

1.算法導論

這本書深入淺出,全面地介紹了計算機算法。對每一個算法的分析既易于理解又十分有趣,并保持了數學嚴謹性。本書的設計目標全面,適用于多種用途。涵蓋的內容有:算法在計算中的作用,概率分析和隨機算法的介紹。書中專門討論了線性規劃,介紹了動態規劃的兩個應用,隨機化和線性規劃技術的近似算法等,還有有關遞歸求解、快速排序中用到的劃分方法與期望線性時間順序統計算法,以及對貪心算法元素的討論。此書還介紹了對強連通子圖算法正確性的證明,對哈密頓回路和子集求和問題的NP完全性的證明等內容。全書提供了900多個練習題和思考題以及敘述較為詳細的實例研究。

2.大話數據結構

通篇以一種趣味方式來敘述,大量引用了各種各樣的生活知識來類比,并充分運用圖形語言來體現抽象內容,對數據結構所涉及到的一些經典算法做到逐行分析、多算法比較。與市場上的同類數據結構圖書相比,本書內容趣味易讀,算法講解細致深刻,是一本非常適合自學的讀物。

3.數據結構與算法

本書是國外數據結構與算法分析方面的經典教材,使用卓越的Java編程語言作為實現工具討論了數據結構(組織大量數據的方法)和算法分析(對算法運行時間的估計)。 隨著計算機速度的不斷增加和功能的日益強大,人們對有效編程和算法分析的要求也不斷增長。本書把算法分析與最有效率的Java程序的開發有機地結合起來,深入分析每種算法,內容全面、縝密嚴格,并細致講解精心構造程序的方法。

你可能也喜歡:

  • java架構師進階之獨孤九劍(一)-算法思想與經典算法
  • java程序員進階必讀書單

  • 總結

    以上是生活随笔為你收集整理的java架构师进阶之独孤九剑:数据结构以及书籍推荐的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。