“珠玑之椟”系列简介与索引

本文精选《编程珠玑》及续作中的经典算法与思想,涵盖位操作、概率统计、代码正确性验证、字符串处理等多个方面,并结合《程序设计实践》等著作深入探讨,适合程序员巩固基础和提升技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系列博文主要目的:

  收集《编程珠玑》和《编程珠玑(续)》(以下简称《续》)上的算法和思想,并包括了一些自己的思考和对相关问题的引申,以备复习和查用。

内容提要:

  主要是算法收集,结合了《程序设计实践》 (Practise of Programming)、《编程精粹:编写高质量C语言代码》(Writing solid code)和《算法导论》的部分相关内容,以及自己的思考,无论你是否看过原书,都能够帮助你快速理解以至于能够独立完成这些算法。我相信自己写的解释比原书详细而易于理解,并且根据我的经验,对很多问题进行了扩展,这也是这个系列命名为“珠玑之椟”的原因。当然,“买椟还珠”是不可取的,这个系列虽然收录了绝大部分有价值的内容,但部分和话题相关但和算法关系不大的有趣内容限于本人时间有限,只好舍掉。建议时间富足的读者尽量阅读原书,并把这个系列的博文当做参考资料。

  出自于《编程珠玑》和《续》原书的算法题和习题有标示。

  本系列博文已经写完,预计1~3天发布一篇,目前(2013.7.8)已发完。

 

索引链接:

  位向量/位图的定义和应用

  估算的应用与Little定律

  随机数函数取样与概率

  浅谈代码正确性:循环不变式、断言、debug

  二分思想与分治法、排序思想

  字符串和数组算法:左移、哈希表、最长重复子序列的后缀数组解法、最大连续子序列

 

原书有但未收录的内容介绍:

1.基础的数据结构

  二分查找树

2.较少使用的数据结构

  箱

3.基本的排序

  插入排序、希尔排序、快速排序

4.堆和优先级队列

  个人更倾向于使用《算法导论》上介绍的版本

5.马尔科夫链文本生成器

  利用马尔科夫链的性质,经过文本训练,能够产生一段自然的随机文本的程序。

  与《程序设计实践》相比,由于使用了更精巧的数据结构,占用空间较少,但也更难理解。

6.以二分查找(第9章)和质数查找(《续》第1章)为例的代码调优

7.位排序算法

  类似strcmp(),可查阅习题11.5

8.拓扑排序

  第2章,伪代码:

initialize a queue to empty

for each node i

  if pre count of i is 0

    insert i to queue

while queue is not empty

  delete t from the front of queue

  print t

  for each successor s of t

    decrement pred count of s

    if the count is 0

    insert s to queue

 《算导》上的拓扑排序比这个略难理解一些,因为它为了说明,引入了结束时间的概念。

9.关联数组

  介绍的是Awk语言的特性,如今的C++里的map容器还有像Python里的字典有类似的作用。

10.以牛顿迭代法为代表的数值分析(《续》第14章)

本书的目标读者是准备去硅谷找工作的码农,也适用于在国内找工作的码农,以及刚接触ACM算法竞赛的新手。 市场上讲解算法的书已经汗牛充栋,为什么还要写这本书呢?主要原因是我对目前市场上的大部分算法书都不太满意。 本书有如下特色: 背后有强大的AlgoHub支持。 本书的所有题目,都可以在 www.algohub.org(即将上线) 上在线判断代码。这样的一大好处是,读者可以边看书,边实现自己的代码,然后提交到网站上验证自己的想法是否正确。AlgoHub的使命是成为最好的算法学习和交流平台。AlgoHub囊括了 POJ, ZOJ, leetcode, HackerRank 等网站的经典题目(一些质量不高的题目则忽略),且 AlgoHub有非常简单的加题系统,用户不需要写一行代码即可自己添加题目,所以AlgoHub的题库还在飞速增长中。 每道题都有完整的代码。 市场上的大部分书,都会讲思路,但给出的代码都是片段,不是完整可编译的代码。本书每题都有完整的代码,且每个代码经过千锤百炼,保证可读性的前提下尽可能简短,方面读者在面试中能快速写出来。 每道题都有多种解法。 本书的宗旨是,用尽可能少的题目,覆盖尽可能多的算法。本书中的的每道题都有多种解法,每种解法不是简单的小改进,而是完全不同的思路,力求举一反三,让读者触类旁通。 本书支持多种主流编程语言。 目前支持 Java, C++, C#, Python, Ruby, JavaScript, Swift, Scala, Clojure, 将来还会支持更多编程语言。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值