出版时间:2012-1 出版社:清华大学出版社 作者:尼尔森 页数:246 译者:李江晋
内容概要
这本程序设计和算法的简明教程用作本科生的第一门教材,无需任何预备知识。
《程序设计与算法(java语言版)》分为两个部分,第1部分介绍了使用java进行程序设计的基本任务,包括变量、表达式和赋值的基本概念以及类型检查,条件和循环语句,按值与按引用传递参数的函数和递归,数组和使用对象的数据封装;第2部分重点介绍了数据结构和算法,包括顺序和分半查找技术.复杂度与效率分析,迭代和递归排序算法,链表及其插入、删除、归并等操作,抽象数据结构,使用面向对象技术编写java程序;最后介绍了用于处理组合式优化问题的高级算法本书每章末尾都给出了练习题.本书最后还提供了一个综合考试题.帮助学生评估对所学内容的掌握程度
书籍目录
第1部分 入 门
第1章 表达式、变量和赋值
1.1 简介
1.2 我的第一个java程序
1.2.1 一个最简单的程序
1.2.2 hello world
1.3 用作计算器的表达式和程序
1.3.1 算术运算和优先级次序
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 集成开发环境(ide)
1.11 习题
1.11.1 教师注意事项
1.11.2 第一组习题
第2章 条件结构和循环
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 循环结构
2.4.1 循环语句:while
2.4.2 循环语句:do-while
2.4.3 循环语句:for
2.4.4 布尔算术表达式
2.5 展开循环和程序终止
2.5.1 展开循环
2.5.2 永不终止的程序
2.5.3 等价于通用while结构的循环
2.5.4 随时利用break中止循环
2.5.5 循环和程序终止
2.6 验证程序:语法、编译和数值错误
2.7 从命令行解析程序参数
2.8 习题
第3章 函数和递归函数
3.1 编写函数的优点
3.2 声明和调用函数
3.2.1 原型化函数
3.2.2 基本函数的示例
3.2.3 一个更精心设计的示例:迭代式阶乘函数
3.2.4 带有条件语句的函数
3.3 静态(类)变量
3.4 函数参数的按值传递
3.4.1 基本的参数传递机制
3.4.2 局部内存和函数调用栈
3.4.3 函数的副作用:改变调用环境
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 创建和初始化数组
4.2.3 获取数组的大小:length
4.2.4 数组的索引范围和越界异常
4.2.5 释放内存和垃圾收集器
4.3 数组引用的基本概念
4.4 将数组用作函数参数
4.5 多维数组:数组的数组
4.5.1 规则的多维数组
4.5.2 不规则的多维数组**
4.6 字符串数组和main函数
4.7 数组的基本应用:查找**
4.8 习题
第2部分 数据结构与算法
第5章 对象和字符串
5.1 为什么程序员需要对象
5.2 声明类和创建对象
5.2.1 构造函数和对象创建
5.2.2 公共的null对象
5.2.3 将对象用作参数的静态(类)函数
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 动态添加对象
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 动态插入:向链表中添加元素
7.2.8 用于链表的优美打印程序
7.2.9 从链表中删除元素
7.2.10 编写链表的程序时常见的错误
7.3 链表上的递归
7.4 复制链表
7.5 通过数组创建链表
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 基本的队列实现:静态函数
8.2.3 队列的应用:集合枚举
8.3 优先级队列和堆
8.3.1 检索最大的元素
8.3.2 添加元素
8.3.3 删除最上面的元素
8.4 面向对象的数据结构:方法
8.5 再论面向对象风格的数据结构
8.5.1 面向对象的优先级队列
8.5.2 面向对象的链表
8.6 栈:后进先出(lifo)的抽象数据结构
8.6.1 栈接口和数组实现
8.6.2 利用链表实现泛型栈
8.7 习题
第9章 优化问题的范型
9.1 简介
9.2 穷尽搜索
9.2.1 填充背包
9.2.2 图解回溯法:八皇后问题
9.3 贪心算法:用于获得有保证的近似解的试探法
9.3.1 0-1背包问题的近似解
9.3.2 用于求解集合覆盖问题的贪心算法
9.4 动态规划:0-1背包问题的最优解
9.5 优化范型:复杂度分析概述
9.6 习题
第10章 计算的科学
10.1 数字世界
10.2 计算的本性
10.3 数字方程
10.4 算法的起源和计算机
10.5 21世纪的计算机科学
第3部分 考 试 复 习
第11章 考试与解答
参考文献
图书封面
评论、评分、阅读与下载