數據結構與算法:C#語言描述 ( 簡體 字) |
作者:(美)Michael McMillan | 類別:1. -> 程式設計 -> .NET -> C# |
譯者:呂秀鋒;崔睿 |
出版社:人民郵電出版社 | 3dWoo書號: 19950 詢問書籍請說出此書號!【缺書】 【不接受訂購】 |
出版日:5/1/2009 |
頁數:260 |
光碟數: |
|
站長推薦:  |
印刷: | 語系: ( 簡體 版 ) |
|
【不接受訂購】 |
ISBN:9787115204271 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:
在專業程序員的成長過程中,對于數據結構與算法的學習至關重要。雖然有許許多多關于數據結構與算法的書籍,但是這些書籍通常都是大學教材,并且是使用在大學里講 授的Java語言或C++語言編寫的。C#語言正在成為一種廣受歡迎的編程語言,這本書旨在面向C#程序員介紹數據結構與算法的基礎知識。. C#語言根植在一個功能非常豐富的.NET框架開發環境中。在.NET框架類庫中包含有一套數據結構類(也稱為群集類),這套類的范圍廣泛,從Array 類、ArrayList類和Collection類到Stack類和Queue類,再到HashTable類和SortedList類。學習數據結構與算 法的學生在學習如何實現它們之前可以先看看如何使用數據結構。以.. |
內容簡介:隨著.NET框架的廣泛應用,C#已經成為最受歡迎的程序設計語言之一。但是,市面上尚無用C#語言講述數據結構和算法的圖書,廣大C#程序員不得不將自 己轉換C++或Java描述的數據結構,費時費力,而且容易出錯。. |
目錄:
第1章 Collections類.泛型類和Timing類概述 . 1 1.1 群集的定義 1 1.2 群集的描述 1 1.2.1 直接存取群集 2 1.2.2 順序存取群集 4 1.2.3 層次群集 6 1.2.4 組群集 7 1.3 CollectionBase類 8 1.3.1 用ArrayList實現Collection類 8 1.3.2 定義Collection類 8 1.3.3 實現Collection類 8 1.4 泛型編程 10 1.5 時間測試 12 1.5.1 一個簡單化的時間測試 12 1.5.2 用于.NET環境的時間測試 13 1.5.3 Timing Test類 14 小結 16 練習 17 第2章 數組和ArrayList 18 2.1 數組基本概念 18 2.1.1 數組的聲明和初始化 18 2.1.2 數組元素的設置和存取訪問 19 2.1.3 檢索數組元數據的方法和屬性 19 2.1.4 多維數組 20 2.1.5 參數數組 21 2.1.6 鋸齒狀數組 22 2.2 ArrayList類 23 2.2.1 ArrayList類的成員 23 2.2.2 應用ArrayList類 24 小結 27 練習 27 第3章 基礎排序算法 29 3.1 排序算法 29 3.1.1 數組類測試環境 29 3.1.2 冒泡排序 31 3.1.3 檢驗排序過程 32 3.1.4 選擇排序 33 3.1.5 插入排序 35 3.2 基礎排序算法的時間比較 36 小結 37 練習 38 第4章 基礎查找算法 39 4.1 順序查找 39 4.1.1 查找最小值和最大值 41 4.1.2 自組織數據加快順序查找速度 42 4.2 二叉查找算法 43 4.3 遞歸二叉查找算法 45 小結 47 練習 47 第5章 棧和隊列 48 5.1 棧.棧的實現以及Stack類 48 5.1.1 棧的操作 48 5.1.2 Stack類的實現 49 5.2 Stack類 51 5.2.1 Stack構造器方法 51 5.2.2 主要的棧操作 52 5.2.3 Peek方法 54 5.2.4 Clear方法 54 5.2.5 Contains方法 54 5.2.6 CopyTo方法和ToArray方法 54 5.2.7 Stack類的實例:十進制向多種進制的轉換 55 5.3 隊列.Queue類以及Queue類的實現 56 5.3.1 隊列的操作 56 5.3.2 Queue的實現 57 5.3.3 Queue類:實例應用 58 5.3.4 用隊列排序數據 61 5.3.5 源自Queue類的優先隊列 64 小結 65 練習 66 第6章 BitArray類 67 6.1 激發的問題 67 6.2 位和位操作 68 6.2.1 二進制數制系統 68 6.2.2 處理二進制數:按位運算符和移位運算符 69 6.3 按位運算符的應用 70 6.4 整數轉換成二進制形式的應用程序 74 6.5 移位的示例應用程序 76 6.6 BitArray類 78 6.6.1 使用BitArray類 78 6.6.2 更多BitArray類的方法和屬性 81 6.7 用BitArray來編寫埃拉托斯特尼篩法 81 6.8 BitArray與數組在埃拉托斯特尼篩法上的比較 83 小結 83 練習 84 第7章 字符串.String類和StringBuilder類 85 7.1 String類的應用 85 7.1.1 創建String對象 85 7.1.2 常用的String類方法 86 7.1.3 Split方法和Join方法 88 7.1.4 比較字符串的方法 90 7.1.5 處理字符串的方法 92 7.2 StringBuilder類 98 7.2.1 構造StringBuilder對象 98 7.2.2 獲取并且設置關于StringBuilder對象的信息 98 7.2.3 修改StringBuilder對象 99 7.3 String類與StringBuilder的性能比較 101 小結 103 練習 103 第8章 模式匹配和文本處理 105 8.1 正則表達式概述 105 8.2 數量詞 107 8.3 使用字符類 109 8.4 用斷言修改正則表達式 111 8.5 使用分組構造 112 8.5.1 匿名組 112 8.5.2 命名組 112 8.5.3 零寬度正向預搜索斷言和零寬度反向預搜索斷言 113 8.6 CapturesCollection類 114 8.7 正則表達式的選項 115 小結 116 練習 116 第9章 構建字典:DictionaryBase類和SortedList類 117 9.1 DictionaryBase類 117 9.1.1 DictionaryBase類的基礎方法和屬性 117 9.1.2 其他的DictionaryBase方法 119 9.2 泛型KeyValuePair類 121 9.3 SortedList類 122 小結 .. 123 練習 123 第10章 散列和Hashtable類 125 10.1 散列概述 125 10.2 選擇散列函數 125 10.3 查找散列表中數據 127 10.4 解決沖突 128 10.4.1 桶式散列法 128 10.4.2 開放定址法 129 10.4.3 雙重散列法 130 10.5 Hashtable類 130 10.5.1 實例化Hashtable對象并且給其添加數據 130 10.5.2 從散列表中分別檢索鍵和數值 131 10.5.3 檢索基于鍵的數值 132 10.5.4 Hashtable類的實用方法 133 10.6 Hashtable的應用:計算機術語表 133 小結 136 練習 136 第11章 鏈表 137 11.1 數組存在的問題 137 11.2 鏈表的定義 137 11.3 面向對象鏈表的設計 138 11.3.1 Node類 138 11.3.2 LinkedList類 139 11.4 鏈表設計的改進方案 141 11.4.1 雙向鏈表 141 11.4.2 循環鏈表 143 11.5 使用Iterator類 146 11.5.1 新的LinkedList類 148 11.5.2 實例化Iterator類 148 11.6 泛型Linked List類和泛型Node類 152 小結 154 練習 154 第12章 二叉樹和二叉查找樹 155 12.1 樹的定義 155 12.2 二叉樹 156 12.2.1 構造二叉查找樹 157 12.2.2 遍歷二叉查找樹 159 12.2.3 在二叉查找樹中查找節點和最大/最小值 161 12.2.4 從二叉查找樹中移除葉子節點 162 12.2.5 刪除帶有一個子節點的節點 163 12.2.6 刪除帶有兩個子節點的節點 164 小結 167 練習 167 第13章 集合 169 13.1 集合的基礎定義.操作及屬性 169 13.1.1 集合的定義 169 13.1.2 集合的操作 169 13.1.3 集合的屬性 169 13.2 第一個用散列表的Set類的實現 170 13.2.1 類數據成員和構造器方法 170 13.2.2 Add方法 170 13.2.3 Remove方法和Size方法 171 13.2.4 Union方法 171 13.2.5 Intersection方法 172 13.2.6 Subset方法 172 13.2.7 Difference方法 172 13.2.8 測試CSet實現的程序 173 13.3 CSet類的BitArray實現 174 13.3.1 使用BitArray實現的概述 174 13.3.2 BitArray集合的實現 175 小結 177 練習 177 第14章 高級排序算法 178 14.1 希爾排序算法 178 14.2 歸并排序算法 179 14.3 堆排序算法 182 14.4 快速排序算法 185 14.4.1 快速排序算法的描述 186 14.4.2 快速排序算法的代碼 187 14.4.3 快速排序算法的改進 188 小結 188 練習 188 第15章 用于查找的高級數據結構和算法 189 15.1 AVL樹 189 15.1.1 AVL樹的基本原理 189 15.1.2 AVL樹的實現 190 15.2 紅黑樹 192 15.2.1 紅黑樹規則 192 15.2.2 紅黑樹的插入 193 15.2.3 紅黑樹實現代碼 194 15.3 跳躍表 198 15.3.1 跳躍表的基本原理 198 15.3.2 跳躍表的實現 199 小結 203 練習 203 第16章 圖和圖的算法 204 16.1 圖的定義 204 16.2 由圖模擬真實世界系統 205 16.3 圖類 205 16.3.1 頂點的表示 205 16.3.2 邊的表示 206 16.3.3 圖的構造 206 16.3.4 圖的第一個應用:拓撲排序 208 16.3.5 拓撲排序算法 208 16.3.6 拓撲排序算法的實現 208 16.4 圖的搜索 211 16.4.1 深度優先搜索 211 16.4.2 廣度優先搜索 213 16.5 最小生成樹 215 16.6 查找最短路徑 218 16.6.1 加權圖 218 16.6.2 確定最短路徑的Dijkstra算法 218 16.6.3 Dijkstra算法的代碼 220 小結 226 練習 226 第17章 高級算法 227 17.1 動態規劃 227 17.1.1 動態規劃實例:計算斐波納契數列 227 17.1.2 尋找最長公共子串 230 17.1.3 背包問題 232 17.2 貪心算法 234 17.2.1 貪心算法實例:找零錢問題 234 17.2.2 采用哈夫曼編碼的數據壓縮 236 17.2.3 用貪心算法解決背包問題 243 小結 245 練習 246 參考文獻 247 索引... 248
|
序: |