本書是國外數據結構與算法分析方面的經典教材,使用的Java編程語言作為實現工具討論了數據結構(組織大量數據的方法)和算法分析(對算法運行時間的估計)。本書把算法分析與最有效率的Java程序的開發有機地結合起來,深入分析每種算法,內容、縝密嚴格,并細致講解精心構造程序的方法。
馬克 艾倫 維斯(Mark Allen Weiss)佛羅里達國際大學計算與信息科學學院教授、副院長,本科教育主任和研究生教育主任。他于1987年獲得普林斯頓大學計算機科學博士學位,師從Bob Sedgewick。他曾經擔任全美AP(Advanced Placement)考試計算機學科委員會的主席(2000-2004)。他的主要研究興趣是數據結構、算法和教育學。
出版者的話前言第1章引論11.1本書討論的內容11.2數學知識復習21.2.1指數21.2.2對數21.2.3級數21.2.4模運算41.2.5證明的方法41.3遞歸簡論51.4實現泛型構件pre-Java 571.4.1使用Object表示泛型81.4.2基本類型的包裝91.4.3使用接口類型表示泛型91.4.4數組類型的兼容性101.5利用Java 5泛型特性實現泛型構件111.5.1簡單的泛型類和接口111.5.2自動裝箱/拆箱111.5.3菱形運算符121.5.4帶有限制的通配符121.5.5泛型static方法141.5.6類型限界141.5.7類型擦除151.5.8對于泛型的限制151.6函數對象16小結18練習18參考文獻19第2章算法分析202.1數學基礎202.2模型222.3要分析的問題222.4運行時間計算242.4.1一個簡單的例子242.4.2一般法則242.4.3較大子序列和問題的求解262.4.4運行時間中的對數312.4.5分析結果的性33小結33練習34參考文獻37第3章表、棧和隊列393.1抽象數據類型393.2表ADT393.2.1表的簡單數組實現403.2.2簡單鏈表403.3Java Collections API中的表413.3.1Collection接口413.3.2Iterator接口423.3.3List接口、ArrayList類和LinkedList類433.3.4例子:remove方法對LinkedList類的使用443.3.5關于ListIterator接口463.4ArrayList類的實現463.4.1基本類463.4.2迭代器、Java嵌套類和內部類493.5LinkedList類的實現523.6棧ADT583.6.1棧模型583.6.2棧的實現593.6.3應用593.7隊列ADT653.7.1隊列模型653.7.2隊列的數組實現653.7.3隊列的應用66小結67練習67第4章樹714.1預備知識714.1.1樹的實現724.1.2樹的遍歷及應用724.2二叉樹754.2.1實現764.2.2例子:表達式樹764.3查找樹ADT——二叉查找樹784.3.1contains方法794.3.2findMin方法和findMax方法804.3.3insert方法804.3.4remove方法824.3.5平均情況分析834.4AVL樹864.4.1單旋轉874.4.2雙旋轉894.5伸展樹944.5.1一個簡單的想法(不能直接使用)954.5.2展開964.6再探樹的遍歷1004.7B樹1014.8標準庫中的集合與映射1054.8.1關于Set接口1054.8.2關于Map接口1054.8.3TreeSet類和TreeMap類的實現1064.8.4使用多個映射的實例106小結111練習111參考文獻115第5章散列1175.1一般想法1175.2散列函數1175.3分離鏈接法1195.4不用鏈表的散列表1235.4.1線性探測法1235.4.2平方探測法1245.4.3雙散列1295.5再散列1305.6標準庫中的散列表1325.7最壞情形下O(1)訪問的散列表 1335.7.1散列1335.7.2布谷鳥散列1355.7.3跳房子散列1435.8通用散列法1465.9可擴散列148小結149練習150參考文獻153第6章優先隊列(堆)1566.1模型1566.2一些簡單的實現1566.3二叉堆1576.3.1結構性質1576.3.2堆序性質1576.3.3基本的堆操作1586.3.4其他的堆操作1626.4優先隊列的應用1646.4.1選擇問題1646.4.2事件模擬1656.5d-堆1666.6左式堆1676.6.1左式堆性質1676.6.2左式堆操作1686.7斜堆1726.8二項隊列1736.8.1二項隊列結構1746.8.2二項隊列操作1746.8.3二項隊列的實現1766.9標準庫中的優先隊列180小結180練習181參考文獻184第7章排序1867.1預備知識1867.2插入排序1867.2.1算法1867.2.2插入排序的分析1877.3一些簡單排序算法的下界1877.4希爾排序1887.5堆排序1917.6歸并排序1937.7快速排序1987.7.1選取樞紐元1997.7.2分割策略2007.7.3小數組2027.7.4實際的快速排序例程2027.7.5快速排序的分析2037.7.6選擇問題的線性期望時間算法2067.8排序算法的一般下界2077.9選擇問題的決策樹下界2097.10對手下界2107.11線性時間的排序:桶排序和基數排序2127.12外部排序2167.12.1為什么需要一些新的算法2177.12.2外部排序模型2177.12.3簡單算法2177.12.4多路合并2187.12.5多相合并2197.12.6替換選擇219小結220練習221參考文獻225第8章不相交集類2278.1等價關系2278.2動態等價性問題2278.3基本數據結構2298.4靈巧求并算法2318.5路徑壓縮2338.6路徑壓縮和按秩求并的最壞情形2348.6.1緩慢增長的函數2358.6.2利用遞歸分解的分析2358.6.3O(M logN)界2408.6.4O(Mα(M,N))界2408.7一個應用241小結243練習243參考文獻244第9章圖論算法2469.1若干定義2469.2拓撲排序2489.3最短路徑算法2509.3.1無權最短路徑2519.3.2Dijkstra算法2549.3.3具有負邊值的圖2589.3.4無圈圖2599.3.5所有點對最短路徑2619.3.6最短路徑的例子2619.4網絡流問題2629.5最小生成樹2679.5.1Prim算法2679.5.2Kruskal算法2699.6深度優先搜索的應用2709.6.1無向圖2709.6.2雙連通性2719.6.3歐拉回路2739.6.4有向圖2759.6.5查找強分支2769.7NP-性介紹2779.7.1難與易2789.7.2NP類2789.7.3NP-問題279小結280練習280參考文獻284第10章算法設計技巧28810.1貪婪算法28810.1.1一個簡單的調度問題28810.1.2哈夫曼編碼29010.1.3近似裝箱問題29310.2分治算法29810.2.1分治算法的運行時間29810.2.2最近點問題30010.2.3選擇問題30210.2.4一些算術問題的理論改進30410.3動態規劃30710.3.1用一個表代替遞歸30710.3.2矩陣乘法的順序安排30910.3.3二叉查找樹31110.3.4所有點對最短路徑31210.4隨機化算法31410.4.1隨機數發生器31510.4.2跳躍表31910.4.3素性測試32010.5回溯算法32210.5.1收費公路重建問題32310.5.2博弈326小結331練習331參考文獻336第11章攤還分析34011.1一個無關的智力問題34011.2二項隊列34011.3斜堆34411.4斐波那契堆34511.4.1切除左式堆中的節點34611.4.2二項隊列的懶惰合并34711.4.3斐波那契堆操作34911.4.4時間界的證明35011.5伸展樹351小結354練習354參考文獻355第12章高級數據結構及其實現35612.1自頂向下伸展樹35612.2紅黑樹36212.2.1自底向上的插入36212.2.2自頂向下紅黑樹36312.2.3自頂向下的刪除36712.3treap樹36812.4后綴數組與后綴樹37012.4.1后綴數組37112.4.2后綴樹37312.4.3線性時間的后綴數組和后綴樹的構建37512.5k-d樹38512.6配對堆387小結392練習393參考文獻396索引399
可以說是很有幫助了
比較經典的書,當當店慶很很劃算,快遞非常慢非常不給力。當當退貨免費上面,是個沒有宣傳的大亮點。
做活動屯的書,經典書等以后慢慢看
需要一定的基礎,以后慢慢看
還不錯。。
快遞很快,隔日到達的。這書看了一點,感覺好深奧,似乎買錯了。
書的左側那邊是破的。。。但是不影響看書,所以懶得換了。dan
包裝整齊,書沒有任何磕碰,紙質很好不薄,字跡清楚,完美
外皮有一點點褶皺可以不計 很好的書呀!好好學習
是同學推薦買的,同學說很棒,對Java學習很有幫助
這書的分量沒說的,存干貨。書的印刷感覺有點差了。書紙也有點軟。
書有點問題,當當客服立即給做了更換,服務態度很好
書是正版,剛拆封,包裝的很好,快遞也很給力,發貨地外省兩天到貨。以后還會來
買的2本書,包裝很好,紙質好。下次繼續來當當購買
好書 兩個月了 但是 書后面的習題真的是需要蠻長的時間來做的
這本書還沒認真看,買的書太多,自己又沒太多時間,一定要趕快看完。
真不知道快遞公司是怎么想的,用塑料袋裝著就送來了,裝的好也就算了,收到的時候袋子都破了
這本書還可以,內容很好,包裝精美,相信當當網,必須好評。
講道理,這本書講的不夠詳細,但是肯定是一本非常好的書了,如果能更詳細就完美了
簡單翻看了一下覺得寫得挺詳細的,不知道如果作為入門的書會怎么樣,先看看吧。
書很好,就是翻譯和排版有點爛,編輯沒有好好檢驗嗎?還有排版簡直不能忍,敢把圖放在文字前面嗎?
上次買的同一出版社的Java編程思想紙質超級差,這次紙質好多了,看書更有激情
有點出乎意料了哈...頁面有點白,不太適合長時間觀看,質量還算好,直接從廣州發貨,兩天就到了,書應該不錯,但是消化應該要很長一段時間
國內數據結構多半是針對c語言和c++的,少有針對java 的。這本書的描述比較嚴謹,內容也很不錯。
之前的數據結構都是C和C++的,這次讀了java的有很不一樣的感受
這本書針對java編排了數據結構與經典的一些算法,可讀性不錯
數據結構和算法講的不錯,有深度,夠細致,非常值得看的一本書。
關于數據結構和算法很權威的一本書籍,值得看
通過這些內容可以精通Java相當高級的內容
看了幾天,作為java新手雖然感覺有一點難懂,但是看起來還是有所收獲的,買的還是很值的,一點點研究,但有個問題在于練習貌似沒有答案,自己做的不知道對錯,也不知道有沒有什么更優解,這就尷尬了。
很不錯,想到了當年我師傅的一句話,早晚有一天,你要買一本書,叫數據結構與算法。