程式設計與算法(Java語言版)

程式設計與算法(Java語言版)

《程式設計與算法(Java語言版)》是2012年清華大學出版社出版的圖書,作者是尼爾森。

圖書詳細信息

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

相關詞條

熱門詞條

聯絡我們