程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 數據結構與算法:C#語言描述 目錄

數據結構與算法:C#語言描述 目錄

編輯:.NET實例教程

.

目錄

第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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved