好书推荐 好书速递 排行榜 读书文摘

程序员实用算法

程序员实用算法
作者:Andrew Binstock / John Rex
译者:陈宗斌
出版社:机械工业出版社
出版年:2009-09
ISBN:9787111272960
行业:计算机
浏览数:4

内容简介

《程序员实用算法》重点关注的是实用、立即可用的代码,并且广泛讨论了可移植性和特定于实现的细节。《程序员实用算法》作者介绍了一些有用但很少被讨论的算法,它们可用于语音查找、日期和时间例程(直到公元1年)、B树和索引文件、数据压缩、任意精度的算术、校验和与数据验证,并且还最全面地介绍了查找例程、排序算法和数据结构。

《程序员实用算法》结构清晰,示例丰富,可作为广大程序员的参考用书。

......(更多)

作者简介

......(更多)

目录

译者序

前言

致谢

第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 散列的概念

3.2 散列函数

3.3 冲突解决方法

3.3.1 线性再散列法

3.3.2 非线性再散列法

3.3.3 外部拉链法

3.4 性能问题

3.5 资源和参考资料

第4章 查找

4.1 查找的特征

4.1.1 准备时间

4.1.2 运行时间

4.1.3 回溯的需要

4.2 蛮力查找

4.3 Boyer Moore查找

4.3.1 启发式方法#1:跳过字符

4.3.2 启发式方法#2:重复模式

4.4 多字符串查找

4.5 用于正则表达式的字符串查找:grep

4.6 近似字符串匹配技术

4.7 语音比较:Soundex算法

4.8 Metaphone:现代的Soundex

4.9 选择技术

4.10 资源和参考资料

4.10.1 通用参考资料

4.10.2 Boyer Moore

4.10.3 多字符串查找

4.10.4 正则表达式查找

4.10.5 近似字符串匹配

4.10.6 Soundex算法和Metaphone算法

第5章 排序

5.1 排序的基本特征

5.1.1 稳定性

5.1.2 对哨兵的需求

5.1.3 对链表进行排序的能力

5.1.4 输入的阶的相关性

5.1.5 对额外存储空间的需求

5.1.6 内部排序技术与外部排序技术

5.2 排序模型

5.2.1 冒泡排序

5.2.2 插入排序

5.2.3 希尔排序

5.2.4 快速排序

5.2.5 堆排序

5.3 对链表进行插入排序

5.4 对链表进行快速排序

5.5 对多个键进行排序——不稳定排序的修正方法

5.6 网络排序

5.7 小结:选择一种排序算法

5.8 资源和参考资料

第6章 树

6.1 二叉树

6.1.1 树查找

6.1.2 节点插入

6.1.3 节点删除

6.1.4 二叉查找树的性能

6.1.5 AVL树

6.2 红黑树

6.3 伸展树

6.4 B树

6.4.1 保持B树平衡

6.4.2 实现B树算法

6.4.3 B树实现的代码

6.5 可以看见森林吗

6.6 资源和参考资料

第7章 日期和时间

7.1 日期例程的库

7.2 时间例程

7.3 用于日期和时间数据的格式

7.4 最后的提醒

7.5 资源和参考资料

第8章 任意精度的算术

8.1 构建计算器

8.2 表示数字

8.3 计算

8.4 加法

8.5 减法

8.6 乘法

8.7 除法

8.8 关于计算器要注意的最后几点

8.9 用于计算平方根的牛顿算法

8.10 分期付款表

8.11 资源和参考资料

第9章 数据压缩

9.1 行程编码

9.2 霍夫曼压缩

9.2.1 代码

9.2.2 其他问题

9.3 滑动窗口压缩

9.4 基于字典的压缩(LZW)

9.4.1 LZW算法的伪代码

9.4.2 LZW压缩的实现

9.4.3 填满字典

9.5 使用哪种压缩方法

9.6 资源和参考资料

第10章 数据完整性和验证

10.1 简单的校验和

10.2 加权校验和

10.3 循环冗余校验

10.3.1 CRC CCITT

10.3.2 CRC 16

10.3.3 CRC 32

10.4 资源和参考资料

......(更多)

读书文摘

除了最直观的应用程序之外,算法是所有程序的核心和灵魂。

通过对算法进行改进以求获得最佳的性能,有两种策略:优化现有的算法或者开发新的算法,这当中应该用到的标准技术有: 1、是I/O减到最小2、减少函数调用的次数3、限制计算密集型操作(如浮点运算和频繁使用除法运算等)

......(更多)

猜你喜欢

点击查看