2019-11-28 第1章 基础
1. 配套网站:http://algs4.cs.princeton.edu/
2. Mac环境搭建:https://lift.cs.princeton.edu/java/mac/
3. 数据结构是算法的副产品或是结果,因此要理解算法必须学习数据结构。
4. 理解和定义问题 → 控制问题的复杂度 → 将其分解为更容易解决的子问题
5. 本书的框架
第1章 基础:讲解用来实现、分析和比较算法的基本原则和方法(Java 编程模型、数据抽象、基本数据结构、集合类的抽象数据类型、算法性能分析的方法和一个案例分析)
第2章 排序:各种排序算法,包括插入排序、选择排序、希尔排序、快速排序、归并排序和堆排序;以及用于解决几个与排序相关的问题的算法:优先队列、选举以及归并
第3章 查找:基本的和高级的查找算法,包括二叉查找树、平衡查找树和散列表
第4章 图:对象和它们的连接(连接可能有权重和方向),利用图可以为困难的问题建模,研究深度优先搜索、广度优先搜索、连通性问题以及若干其他算法和应用,包括 Kruskal 和 Prim 的最小生成树算法、Dijkstra 和Bellman-Ford 的最短路径算法。
第5章 字符串:一系列处理字符串的算法,① 对字符串键的排序和查找的快速算法;② 子字符串查找 ③ 正则表达式模式匹配 ④ 数据压缩算法
第6章 背景:其他前沿研究领域,包括科学计算、运筹学和计算理论;搜索问题、问题转化和 NP 完全性等算法研究的支柱理论
学会算法式思考
1.1基础编程模型
1.1.1 Java程序的基本结构
7种语法:
1. 原始数据类型
用途:精确地定义整数、浮点数和布尔值等
定义包括 取值范围 和 能够对相应的值进行的操作,它们能够被组合为类似于数学公式定义的表达式
浮点数:定点就是小数点永远在固定的位置上,浮点数就是一个定点数加上一个阶码(阶码表示将这个定点数的小数点移动若干位)
2. 语句
通过创建变量并对其赋值、控制运行流程或者引发副作用来进行计算;
六种语句:声明、赋值、条件、循环、调用和返回
3. 数组
多个同种数据类型的值的集合
4. 静态方法
封装并重用代码,使我们可以用独立的模块开发程序
5. 字符串
一连串的字符,Java 内置了对它们的一些操作
6. 标准输入 / 输出
程序与外界联系的桥梁
7. 数据抽象
封装和重用代码,使我们可以定义非原始数据类型,进而支持面向对象编程
输入命令执行程序的环境称为虚拟终端