出版時間:2012-1 出版社:清華大學出版社 作者:尼爾森 頁數:246 譯者:李江晉
內容概要
這本程序設計和算法的簡明教程用作本科生的第一門教材,無需任何預備知識。
《程序設計與算法(java語言版)》分為兩個部分,第1部分介紹了使用java進行程序設計的基本任務,包括變量、表達式和賦值的基本概念以及類型檢查,條件和循環(huán)語句,按值與按引用傳遞參數的函數和遞歸,數組和使用對象的數據封裝;第2部分重點介紹了數據結構和算法,包括順序和分半查找技術.復雜度與效率分析,迭代和遞歸排序算法,鏈表及其插入、刪除、歸并等操作,抽象數據結構,使用面向對象技術編寫java程序;最后介紹了用于處理組合式優(yōu)化問題的高級算法本書每章末尾都給出了練習題.本書最后還提供了一個綜合考試題.幫助學生評估對所學內容的掌握程度
書籍目錄
第1部分 入 門
第1章 表達式、變量和賦值
1.1 簡介
1.2 我的第一個java程序
1.2.1 一個最簡單的程序
1.2.2 hello world
1.3 用作計算器的表達式和程序
1.3.1 算術運算和優(yōu)先級次序
1.3.2 數學函數
1.3.3 聲明常量
1.4 給java程序加注釋
1.5 縮進程序
1.6 變量、賦值和類型檢查
1.6.1 用于存儲中間值的變量
1.6.2 為賦值和強制轉換進行類型檢查
1.6.3 賦值的內部機制
1.7 遞增/遞減變量
1.7.1 遞增的一般機制
1.7.2 前遞增與后遞增
1.7.3 用于求解二次方程的計算程序
1.8 java輸入/輸出(i/o)基礎
1.8.1 計算并不意味著顯示
1.8.2 鍵盤輸入
1.8.3 文件重定向
1.9 錯誤和調試的藝術
1.10 集成開發(fā)環(huán)境(ide)
1.11 習題
1.11.1 教師注意事項
1.11.2 第一組習題
第2章 條件結構和循環(huán)
2.1 指令工作流程
2.2 條件結構:簡單選擇和多重選擇
2.2.1 分支條件:if ... else ...
2.2.2 用于分支指令的三元運算符:謂詞? a : b
2.2.3 嵌套的條件語句
2.2.4 用于比較的關系和邏輯運算符
2.2.5 多重選擇:switch case
2.3 塊和變量的作用域
2.3.1 指令塊
2.3.2 嵌套塊和變量作用域
2.4 循環(huán)結構
2.4.1 循環(huán)語句:while
2.4.2 循環(huán)語句:do-while
2.4.3 循環(huán)語句:for
2.4.4 布爾算術表達式
2.5 展開循環(huán)和程序終止
2.5.1 展開循環(huán)
2.5.2 永不終止的程序
2.5.3 等價于通用while結構的循環(huán)
2.5.4 隨時利用break中止循環(huán)
2.5.5 循環(huán)和程序終止
2.6 驗證程序:語法、編譯和數值錯誤
2.7 從命令行解析程序參數
2.8 習題
第3章 函數和遞歸函數
3.1 編寫函數的優(yōu)點
3.2 聲明和調用函數
3.2.1 原型化函數
3.2.2 基本函數的示例
3.2.3 一個更精心設計的示例:迭代式階乘函數
3.2.4 帶有條件語句的函數
3.3 靜態(tài)(類)變量
3.4 函數參數的按值傳遞
3.4.1 基本的參數傳遞機制
3.4.2 局部內存和函數調用棧
3.4.3 函數的副作用:改變調用環(huán)境
3.4.4 函數簽名和函數重載
3.5 遞歸
3.5.1 再論階乘函數:一個遞歸函數
3.5.2 斐波納奇數列
3.5.3 對數平均值
3.6 終結遞歸以提高程序效率**
3.7 遞歸和圖形**
3.8 中止問題:不可判定的任務
3.9 習題
第4章 數組
4.1 為什么程序員需要數組
4.2 聲明和初始化數組
4.2.1 聲明數組
4.2.2 創(chuàng)建和初始化數組
4.2.3 獲取數組的大?。簂ength
4.2.4 數組的索引范圍和越界異常
4.2.5 釋放內存和垃圾收集器
4.3 數組引用的基本概念
4.4 將數組用作函數參數
4.5 多維數組:數組的數組
4.5.1 規(guī)則的多維數組
4.5.2 不規(guī)則的多維數組**
4.6 字符串數組和main函數
4.7 數組的基本應用:查找**
4.8 習題
第2部分 數據結構與算法
第5章 對象和字符串
5.1 為什么程序員需要對象
5.2 聲明類和創(chuàng)建對象
5.2.1 構造函數和對象創(chuàng)建
5.2.2 公共的null對象
5.2.3 將對象用作參數的靜態(tài)(類)函數
5.3 對象和引用
5.3.1 復制對象:克隆
5.3.2 測試對象相等性
5.4 對象的數組
5.5 帶有數組成員的對象
5.6 標準化的string對象
5.6.1 聲明string變量并賦值
5.6.2 字符串的長度:length( )
5.6.3 字符串的相等性測試:equals(string str)
5.6.4 比較字符串:字典序
5.7 再論基本的程序骨架
5.8 習題
第6章 查找和排序
6.1 概述
6.2 查找信息
6.3 順序查找
6.3.1 順序查找的復雜度
6.3.2 動態(tài)添加對象
6.3.3 二分/分半查找
6.4 對數組進行排序
6.4.1 通過選擇進行排序:selectionsort
6.4.2 把選擇排序擴展到對象
6.4.3 選擇排序的復雜度
6.5 快速排序:遞歸排序
6.5.1 快速排序的復雜度分析
6.6 通過散列查找
6.7 習題
第7章 鏈表
7.1 簡介
7.2 單元和鏈表
7.2.1 說明單元和鏈表的概念
7.2.2 將鏈表作為一種抽象數據結構
7.2.3 在java中編寫鏈表的程序
7.2.4 遍歷鏈表
7.2.5 存儲string元素的鏈表
7.2.6 鏈表的長度
7.2.7 動態(tài)插入:向鏈表中添加元素
7.2.8 用于鏈表的優(yōu)美打印程序
7.2.9 從鏈表中刪除元素
7.2.10 編寫鏈表的程序時常見的錯誤
7.3 鏈表上的遞歸
7.4 復制鏈表
7.5 通過數組創(chuàng)建鏈表
7.6 存儲鏈表
7.6.1 合并有序的鏈表
7.6.2 鏈表的遞歸排序
7.7 關于鏈表的總結
7.8 鏈表的應用:散列
7.8.1 開放地址散列
7.8.2 利用鏈表解決沖突
7.9 幾種核心數據結構的比較
7.10 習題
第8章 面向對象的數據結構
8.1 簡介
8.2 隊列:先進先出(fifo)
8.2.1 隊列作為抽象數據結構:接口
8.2.2 基本的隊列實現:靜態(tài)函數
8.2.3 隊列的應用:集合枚舉
8.3 優(yōu)先級隊列和堆
8.3.1 檢索最大的元素
8.3.2 添加元素
8.3.3 刪除最上面的元素
8.4 面向對象的數據結構:方法
8.5 再論面向對象風格的數據結構
8.5.1 面向對象的優(yōu)先級隊列
8.5.2 面向對象的鏈表
8.6 棧:后進先出(lifo)的抽象數據結構
8.6.1 棧接口和數組實現
8.6.2 利用鏈表實現泛型棧
8.7 習題
第9章 優(yōu)化問題的范型
9.1 簡介
9.2 窮盡搜索
9.2.1 填充背包
9.2.2 圖解回溯法:八皇后問題
9.3 貪心算法:用于獲得有保證的近似解的試探法
9.3.1 0-1背包問題的近似解
9.3.2 用于求解集合覆蓋問題的貪心算法
9.4 動態(tài)規(guī)劃:0-1背包問題的最優(yōu)解
9.5 優(yōu)化范型:復雜度分析概述
9.6 習題
第10章 計算的科學
10.1 數字世界
10.2 計算的本性
10.3 數字方程
10.4 算法的起源和計算機
10.5 21世紀的計算機科學
第3部分 考 試 復 習
第11章 考試與解答
參考文獻
圖書封面
評論、評分、閱讀與下載