4.1.1 抽象化
- 理解如何通过仅包含基本细节来对复杂系统进行建模,使用
- 具有合适参数的函数和过程(如命令式编程,参见第 2.3 节)
- ADT(参见第 4.1.3 节)
- 类(如面向对象编程中所用,参见第 4.3.1 节)
- 事实、规则(如声明式编程中所用,参见第 4.3.1 节)
4.1.2 算法
- 编写二分查找算法来解决特定问题
- 理解使用二分查找的必要条件
- 理解二分查找的性能如何根据数据项的数量而变化
- 编写算法以实现插入排序
- 编写算法以实现冒泡排序
- 理解排序例程的性能可能取决于数据的初始顺序和数据项的数量
- 编写算法以在以下每个元素中找到一个项目:链表、二叉树、哈希表
- 编写算法以将一个项目插入到以下每个元素中:堆栈、队列、链表、二叉树、哈希表
- 编写算法以从以下每个元素中删除一个项目:堆栈、队列、链表
- 理解执行相同任务的不同算法可以通过使用诸如完成任务所需的时间和使用的内存等标准进行比较
4.1.3 抽象数据类型 (ADT)
- 理解 ADT 是数据集合和对这些数据的一组操作
- 理解在特定编程语言中不可用作内置类型的那些数据结构需要从语言中内置的那些数据结构中构造
TYPE <identifier1>
DECLARE <identifier2> : <data type>
DECLARE <identifier3> : <data type>
…
ENDTYPE
- 展示 ADT 如何可能从另一个 ADT 实现
- 描述以下 ADT 并演示它们如何从适当的内置类型或其他 ADT 实现:堆栈、队列、链表、字典、二叉树
堆栈
- 描述并演示此 ADT 如何从适当的内置类型或其他 ADT 实现
队列
- 描述并演示此 ADT 如何从适当的内置类型或其他 ADT 实现
- 编写算法以
链表
- 描述并演示此 ADT 如何从适当的内置类型或其他 ADT 实现
- 编写算法以
字典
- 描述并演示此 ADT 如何从适当的内置类型或其他 ADT 实现
二叉树
- 描述并演示此 ADT 如何从适当的内置类型或其他 ADT 实现
4.1.4 递归
- 理解递归的基本特征
- 理解如何在编程语言中表达递归
- 跟踪递归算法
- 编写递归算法
- 理解何时使用递归是有益的
- 了解编译器在编程语言中实现递归时必须做什么