圖書詳細信息
ISBN:9787302272441
定價:35元
印次:1-1
裝幀:平裝
平裝:2012-1-11
圖書簡介
數據結構與算法是計算機專業的核心課程,是計算機軟體開發和套用人員必備的專業基礎。本書設計用作本科生的第一門教材,利用Java介紹數據結構與算法的相關知識,這是本書的鮮明特點。
本書內容共分10章,並分為兩個部分。第1部分介紹了使用Java進行程式設計的基本任務,以及Java語言的基礎編程知識。第2部分重點介紹了數據結構和算法,並且解釋了如何使用面向對象風格的方法用Java編寫它們的程式。
目錄
第1部分入門
第1章表達式、變數和賦值 3
1.1簡介 3
1.2我的第一個Java程式 3
1.2.1一個最簡單的程式 3
1.2.2HelloWorld 4
1.3用作計算器的表達式和程式 5
1.3.1算術運算和優先權次序 6
1.3.2數學函式 8
1.3.3聲明常量 9
1.4給Java程式加注釋 9
1.5縮進程式 10
1.6變數、賦值和類型檢查 10
1.6.1用於存儲中間值的變數 11
1.6.2為賦值和強制轉換進行類型檢查 14
1.6.3賦值的內部機制 16
1.7遞增/遞減變數 17
1.7.1遞增的一般機制 17
1.7.2前遞增與後遞增 18
1.7.3用於求解二次方程的計算程式 19
1.8Java輸入/輸出(I/O)基礎 19
1.8.1計算並不意味著顯示 20
1.8.2鍵盤輸入 21
1.8.3檔案重定向 22
1.9錯誤和調試的藝術 24
1.10集成開發環境(IDE) 26
1.11習題 27
1.11.1教師注意事項 27
1.11.2第一組習題 28
第2章條件結構和循環 30
2.1指令工作流程 30
2.2條件結構:簡單選擇和多重選擇 30
2.2.1分支條件:if...else... 30
2.2.2用於分支指令的三元運算符:謂詞?A:B 32
2.2.3嵌套的條件語句 33
2.2.4用於比較的關係和邏輯運算符 35
2.2.5多重選擇:switchcase 37
2.3塊和變數的作用域 39
2.3.1指令塊 39
2.3.2嵌套塊和變數作用域 40
2.4循環結構 41
2.4.1循環語句:while 41
2.4.2循環語句:do-while 42
2.4.3循環語句:for 44
2.4.4布爾算術表達式 45
2.5展開循環和程式終止 46
2.5.1展開循環 46
2.5.2永不終止的程式 46
2.5.3等價於通用while結構的循環 47
2.5.4隨時利用break中止循環 47
2.5.5循環和程式終止 47
2.6驗證程式:語法、編譯和數值錯誤 48
2.7從命令行解析程式參數 50
2.8習題 52
第3章函式和遞歸函式 55
3.1編寫函式的優點 55
3.2聲明和調用函式 55
3.2.1原型化函式 55
3.2.2基本函式的示例 57
3.2.3一個更精心設計的示例:疊代式階乘函式 58
3.2.4帶有條件語句的函式 59
3.3靜態(類)變數 60
3.4函式參數的按值傳遞 62
3.4.1基本的參數傳遞機制 62
3.4.2局部記憶體和函式調用棧 63
3.4.3函式的副作用:改變調用環境 65
3.4.4函式簽名和函式重載 67
3.5遞歸 68
3.5.1再論階乘函式:一個遞歸函式 69
3.5.2斐波納奇數列 70
3.5.3對數平均值 71
3.6終結遞歸以提高程式效率** 72
3.7遞歸和圖形** 73
3.8中止問題:不可判定的任務 76
3.9習題 77
第4章數組 80
4.1為什麼程式設計師需要數組 80
4.2聲明和初始化數組 80
4.2.1聲明數組 80
4.2.2創建和初始化數組 81
4.2.3獲取數組的大小:length 82
4.2.4數組的索引範圍和越界異常 83
4.2.5釋放記憶體和垃圾收集器 84
4.3數組引用的基本概念 84
4.4將數組用作函式參數 87
4.5多維數組:數組的數組 91
4.5.1規則的多維數組 91
4.5.2不規則的多維數組** 93
4.6字元串數組和main函式 95
4.7數組的基本套用:查找** 97
4.8習題 99
第2部分數據結構與算法
第5章對象和字元串 105
5.1為什麼程式設計師需要對象 105
5.2聲明類和創建對象 106
5.2.1構造函式和對象創建 107
5.2.2公共的null對象 109
5.2.3將對象用作參數的靜態(類)函式 109
5.3對象和引用 111
5.3.1複製對象:克隆 112
5.3.2測試對象相等性 112
5.4對象的數組 114
5.5帶有數組成員的對象 115
5.6標準化的String對象 116
5.6.1聲明String變數並賦值 116
5.6.2字元串的長度:length() 117
5.6.3字元串的相等性測試:equals(Stringstr) 117
5.6.4比較字元串:字典序 118
5.7再論基本的程式骨架 121
5.8習題 122
第6章查找和排序 126
6.1概述 126
6.2查找信息 126
6.3順序查找 128
6.3.1順序查找的複雜度 130
6.3.2動態添加對象 130
6.3.3二分/分半查找 132
6.4對數組進行排序 134
6.4.1通過選擇進行排序:SelectionSort 134
6.4.2把選擇排序擴展到對象 136
6.4.3選擇排序的複雜度 138
6.5快速排序:遞歸排序 139
6.5.1快速排序的複雜度分析 140
6.6通過散列查找 140
6.7習題 143
第7章鍊表 144
7.1簡介 144
7.2單元和鍊表 144
7.2.1說明單元和鍊表的概念 144
7.2.2將鍊表作為一種抽象數據結構 145
7.2.3在Java中編寫鍊表的程式 145
7.2.4遍歷鍊表 146
7.2.5存儲String元素的鍊表 147
7.2.6鍊表的長度 148
7.2.7動態插入:向鍊表中添加元素 149
7.2.8用於鍊表的優美列印程式 150
7.2.9從鍊表中刪除元素 151
7.2.10編寫鍊表的程式時常見的錯誤 152
7.3鍊表上的遞歸 152
7.4複製鍊表 154
7.5通過數組創建鍊表 155
7.6存儲鍊表 156
7.6.1合併有序的鍊表 156
7.6.2鍊表的遞歸排序 158
7.7關於鍊表的總結 160
7.8鍊表的套用:散列 160
7.8.1開放地址散列 162
7.8.2利用鍊表解決衝突 164
7.9幾種核心數據結構的比較 165
7.10習題 165
第8章面向對象的數據結構 168
8.1簡介 168
8.2佇列:先進先出(FIFO) 168
8.2.1佇列作為抽象數據結構:接口 168
8.2.2基本的佇列實現:靜態函式 169
8.2.3佇列的套用:集合枚舉 171
8.3優先權佇列和堆 173
8.3.1檢索最大的元素 174
8.3.2添加元素 174
8.3.3刪除最上面的元素 176
8.4面向對象的數據結構:方法 177
8.5再論面向對象風格的數據結構 182
8.5.1面向對象的優先權佇列 182
8.5.2面向對象的鍊表 183
8.6棧:後進先出(LIFO)的抽象數據結構 186
8.6.1棧接口和數組實現 186
8.6.2利用鍊表實現泛型棧 188
8.7習題 190
第9章最佳化問題的范型 191
9.1簡介 191
9.2窮盡搜尋 192
9.2.1填充背包 192
9.2.2圖解回溯法:八皇后問題 198
9.3貪心算法:用於獲得有保證的近似解的試探法 202
9.3.10-1背包問題的近似解 202
9.3.2用於求解集合覆蓋問題的貪心算法 207
9.4動態規劃:0-1背包問題的最優解 213
9.5最佳化范型:複雜度分析概述 216
9.6習題 217
第10章計算的科學 220
10.1數字世界 220
10.2計算的本性 222
10.3數字方程 222
10.4算法的起源和計算機 223
10.521世紀的計算機科學 223
第3部分考試複習
第11章考試與解答 227
參考文獻 247