前言(3) 本书概况

来源:互联网 发布:java如何获取当前年份 编辑:程序博客网 时间:2024/05/01 13:19

本书概况

本书展示的材料来自 ACM/IEEE-CS 联合课程任务组《计算机课程》1991年的报告。本书特别地讨论了下列知识单元:AL1: 基本数据结构, AL2: 抽象数据类型, AL3: 递归算法, AL4: 复杂度分析, AL6: 排序和查找,  AL8: 问题求解策略。涉及的深度和广度应该适合于计算机科学和计算机工程专业二年级或三年级学生。

为了分析程序结构,有必要掌握计算机的模型。第 章讨论了几种模型和它们的性能情况。一般性和最坏性运行时间分析都进行了考虑。讨论了递归算法并展示了重复替换法解决循环性问题。这一章也复习了数学和几何学的一些定律, Horner定律以及 harmonic numbers的特性。

Chapter gif introduces asymptotic (big-oh) notation and shows by comparing with Chapter gif that the results of asymptotic analysis are consistent with models of higher fidelity. In addition to tex2html_wrap_inline57397, this chapter also covers other asymptotic notations ( tex2html_wrap_inline57399, tex2html_wrap_inline57401, and tex2html_wrap_inline57403) and develops the asymptotic properties of polynomials and logarithms.

第 章介绍了基础数据结构:数列和链表。本书中几乎所有的数据结构都可以使用这些基础数据结构实现。这一章也介绍了多维数列和矩阵。

第 章涉及抽象和数据类型。其中展示了循环设计模式以及在接下来章节中介绍的一个统一的数据结构框架。特别地,所有的数据结构可以看成是抽象容器。 

第 章讨论了栈、队列、双端队列。这一章展示了基于基础数据结构的实现。基于栈和队列的应用也有说明。

第 章覆盖了有序列,包括排序后的和未排序的。在这一章中,队列被看成是一个可搜索的容器。同样,列表的多个应用案例也在这一章中有说明。

第 章介绍哈希和哈希表的概念。这一章中讲解了各种基本数据类型哈希功能的设计 以及抽象数据类型哈希设计。分散表和哈希表都进行了深入讲解,并进行了性能分析。

Chapter       introduces trees and describes their many forms. Both depth-first and breadth-first tree traversals are presented. Completely generic traversal algorithms based on the use of the visitor design pattern are presented, thereby illustrating the power of algorithmic abstraction. This chapter also shows how trees are used to represent mathematical expressions and illustrates the relationships between traversals and the various expression notations (prefix, infix, and postfix).

Chapter     addresses trees as searchable containers. Again, the power of algorithmic abstraction is demonstrated by showing the relationships between simple algorithms and balancing algorithms. This chapter also presents average case performance analyses and illustrates the solution of recurrences by telescoping.

Chapter     presents several priority queue implementations, including binary heaps, leftist heaps, and binomial queues. In particular this chapter illustrates how a more complicated data structure (leftist heap) extends an existing one (tree). Discrete-event simulation is presented as an application of priority queues.

Chapter      covers sets and multisets. Also covered are partitions and disjoint set algorithms. The latter topic illustrates again the use of algorithmic abstraction.

Garbage collection is discussed in Chapter      . This is a topic that is not found often in texts of this sort. However, because the C# language relies on garbage collection, it is important to understand how it works and how it affects the running times of programs.

Chapter      surveys a number of algorithm design techniques. Included are brute-force and greedy algorithms, backtracking algorithms (including branch-and-bound), divide-and-conquer algorithms, and dynamic programming. An object-oriented approach based on the notion of an abstract solution space and an abstract solver unifies much of the discussion. This chapter also covers briefly random number generators, Monte Carlo methods, and simulated annealing.

Chapter     covers the major sorting algorithms in an object-oriented style based on the notion of an abstract sorter. Using the abstract sorter illustrates the relationships between the various classes of sorting algorithm and demonstrates the use of algorithmic abstractions.

Finally, Chapter      presents an overview of graphs and graph algorithms. Both depth-first and breadth-first graph traversals are presented. Topological sort is viewed as yet another special kind of traversal. Generic traversal algorithms based on the visitor design pattern are presented, once more illustrating algorithmic abstraction. This chapter also covers various shortest path algorithms and minimum-spanning-tree algorithms.

每一章的结尾是一系列的练习和编程项目。练习用于巩固已学习的概念,而项目要求学生把学到的知识灵活应用。

原创粉丝点击