查字典图书网
当前位置: 查字典 > 图书网 > 编程 > 程序员实用算法 > 试读

程序员实用算法[试读]

译者序

数据结构与算法是计算机专业的核心课程,是计算机软件开发和应用人员必备的专业基础。今天的大多数关于算法的图书都是大学教科书,或者是令人厌倦的相同算法集合改头换面后的作品。本书是给出所有算法的完整代码实现的第一本书,这些算法对于开发人员在其日常工作中是有用的。 本书介绍了关于算法的基础知识、基本数据结构... 查看全部[ 译者序 ]

前言

本书的目的是为在应用程序中使用的算法提供一个实用的纲要。与关于算法的大多数著作不同的是,本书不是一本教材。你将不会发现实现细节(我们把它作为练习留给读者完成);也不会发现利用较小的代码段对算法进行高度理论化的讨论,以说明如何进行实现。相反,与我们的信念(即最佳的解释是实用的程序)保持一致,你将发现完... 查看全部[ 前言 ]

致谢

这本书最初的想法是由Phil Pistone于1991年夏天提出的,感谢他提供给我们这个为期三年的任务。AddisonWesley的许多优秀成员是这次延误的主要“受害者”,非常感谢他们耐心和友善。尤其是Keith Woilman,他领导着计算机普通版图书部门并使之成为AddisonWesley的... 查看全部[ 致谢 ]

目录

译者序 前言 致谢 第1章绪论 11评估算法 12修改算法 121主要的优化:I/O 122主要的优化:函数调用 13资源和参考资料 第2章基本数据结构 21链表 211双向链表 212链表的其他特征 22栈和队列 221栈的特征 222队列的特征 第3章散列 3... 查看全部[ 目录 ]

1.1评估算法

除了最直观的应用之外,算法是所有程序的核心和灵魂。算法一般被设计用于以最小的代价高效地解决特定的问题。算法的价值一般取决于两方面因素:如何恰当地解决问题以及如何高效地实现解决方案。这些是算法分析的定性和定量方面。 对于许多算法,质量不是一个问题。例如,对于排序算法,必须保证每次都对所有元素正确地进行... 查看全部[ 1.1评估算法 ]

1.2修改算法

在计算机领域,一项正在进行的工作是,通过对算法进行改进以求获得最佳的性能。这种工作通常采用以下两种策略之一:优化现有的算法或者开发新的算法。这些策略具有截然不同的目标,应当加以区别看待。在优化算法的时候,一般不会尝试使其性能方程降级。例如,我们知道冒泡排序的平均性能是O(N2-N)。如果你必须使用冒... 查看全部[ 1.2修改算法 ]

1.2.1主要的优化:I/O

减少I/O和函数调用的开销是如此重要,以至于通过讨论便携式技术以降低其开销被证明具有充分的根据。I/O通常发生在毫秒级时间范围内,而CPU活动一般发生在亚微秒级的范围内。因此,对于算法的性能而言,任何I/O的代价都非常高昂。如果不能消除I/O本身,那么可以通过使用智能缓冲来减小它的影响。许多程序员把... 查看全部[ 1.2.1主要的优化:I/O ]

1.2.2主要的优化:函数调用

另一个重要的优化是减少函数调用的次数。虽然现在许多编译器已经针对函数调用进行了重大优化,但是对于函数携带的重大开销还是稍存疑虑。为了验证这一点,我们可以编写一个小程序,它把一个只执行返回语句的函数调用了10 000次,你将开始感觉到函数调用的代价,如果函数传递参数或者返回值,那么花费的时间将会更长一... 查看全部[ 1.2.2主要的优化:函数调用 ]

1.3资源和参考资料

Rex, John“The pascal Keyword”C Gazette, Vol3, No4它很好地分析了使用pascal选项的好处和风险。xml version='1.0' encoding='%SOUP-ENCODING%' Tanenbaum, AndrewOperating... 查看全部[ 1.3资源和参考资料 ]

2.1链表

算法是指为了达到某种目的而操作数据的方式。算法通常适用于具体的问题,以复杂的方式来处理简单的数据。例如,编译器把简单的字符串和字符翻译成可以在特定机器上执行的二进制代码。编译器的内部工作原理是:通过相互影响的诸多算法按顺序将源代码字符转换为中间表示。这些表示都是通过其他算法将它们自身翻译成目标代码,... 查看全部[ 2.1链表 ]