《程序设计与算法 Java语言版》PDF下载

  • 购买积分:10 如何计算积分?
  • 作  者:(美)尼尔森著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2012
  • ISBN:9787302272441
  • 页数:247 页
图书介绍:本书分为两个部分,第1部分介绍了使用Java进行程序设计的基本任务;第2部分重点介绍了数据结构和算法。

第1部分 入门 3

第1章 表达式、变量和赋值 3

1.1简介 3

1.2我的第一个Java程序 3

1.2.1一个最简单的程序 3

1.2.2 Hello World 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.8 Java输入/输出(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多重选择:switch case 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部分 数据结构与算法 105

第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(String str) 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.1 0-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.5 21世纪的计算机科学 223

第3部分 考试复习 227

第11章 考试与解答 227

参考文献 247