
| 《程序设计与算法(java语言版)》 第1部分 入 门 第1章 表达式、变量和赋值3 1.1 简介3 1.2 我的第一个java程序3 1.2.1 一个最简单的程序3 1.2.2 hello world4 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 : b32 2.2.3 嵌套的条件语句33 2.2.4 用于比较的关系和逻辑运算符35 2.2.5 多重选择:switch case37 2.3 块和变量的作用域39 2.3.1 指令块39 2.3.2 嵌套块和变量作用域40 2.4 循环结构41 2.4.1 循环语句:while41 2.4.2 循环语句:do-while42 2.4.3 循环语句:for44 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 获取数组的大小:length82 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(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 通过选择进行排序:selectionsort134 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部分 考 试 复 习 第11章 考试与解答227 参考文献247 |
商品评论(0条)