Programming Pearls(编程珠玑)读书笔记之COLUMN 4:Writing Correct Programs

这个专栏主要强调了写出正确无误的程序。

看了一个很有趣的故事:原来写出一个正确的二分搜索的算法是这么地难,作者曾经给一些专业的程序员布置了二分搜索的题目,允许他们选择自己的语言甚至高级的伪代码,而结果却是几乎所有的程序员(90%)交上的代码都有错误,只有不到10%的程序员能够准确无误地写出这个小程序。我也震惊了,当然下面一个小故事也很有趣:Knuth指出来二分搜索最开始是1946年被发表的,但是第一个发表出的没有bug的二分搜索直到1962年才出现。。

回到宿舍,我也尝试了一下用C++实现了一个二分搜索的小程序:

 

可惜的是,我倒不是算法出错了,倒是在其他一[......]

Read more

Programming Pearls(编程珠玑)读书笔记之COLUMN 3:Data Structures Programs

这个专栏顾名思义,着重讲了数据的结构化对程序的重要性

开头就讲了一个很浅显的例子如下:

 

很显然应该用数组重新考虑这个问题。

另一个例子是Form-Letter Programming,一种常见的初级的输出语句可能如下所示:

 

这种方式不用动脑筋但是看起来很罗嗦,而且不够灵活。

如果要写出更加优雅的代码,首先要依赖于一个如下所示的form letter schema:

Welcome back,$1
We hope that you and all the members
of the $0 family are con[......]

Read more

Programming Pearls(编程珠玑)读书笔记之COLUMN 2:Aha!Algorithms

算法是一个程序员的基本功,在面对一个问题的时候,如果用常规的思维来思考,往往只能得到一个中规中矩甚至效率十分低下的解法。这个时候如果稍加思考,或者think out the box,就会灵光乍现,得到算法的aha! insights,想出十分巧妙的解法。这个专栏主要讲的就是思考后得到的aha! algorithms(巧妙的算法)。Martin Gardner说过:“A problem that seems difficult may have a simple,unexpected solution”。

提出了三个问题:

1. 有一个文件包含有至多40亿个32位整数,找出一个文件中[......]

Read more

Programming Pearls(编程珠玑)读书笔记之COLUMN 1:Cracking the oyster

《编程珠玑》(Programming Peals)这本书买了很久了,买回来看了第一栏之后就一直没看过,这次决定每天看一个专栏(column),争取在这个月内看完。

今天从Column 1看起,这次专栏讲了一个很简单的问题:How do I sort a disk file?

问题经过一番分析后可以描述如下:

输入:一个包含有最多n个正整数的文件,每一个数都小于n,而n = 107,输入中任意整数都不会出现两次,同时每个数都没有其他的数据与之关联。

输出:一个升序排列的列表

限制条件:内存中最到只有1 Mb的存储容量可用,磁盘容量是足够的。运行时间必须最多不超过几分[......]

Read more

Hello world!

欢迎使用 WordPress。这是系统自动生成的演示文章。编辑或者删除它,开始您的博客!

从这次起好好经营这个博客。


无觅相关文章插件,快速提升流量