《编程珠玑》阅读笔记——Ⅱ

  真正完美的将算法和编程完美的结合,编程给人美的感受,或者说编程能像数学一样优雅。这是一本要边读边思考的书,所以适当把书里边提到的算法好好想想,自己闭上眼在脑子里过一遍。才能感受到作者的智慧与苦心。

  先说基础部分,基础部分5章(开篇、啊哈算法、数据决定程序结构、编写正确程序、编程小事),当我第一次看目录的时候我也觉得每章之间没有任何关系,可以挑你喜欢的看,但我的习惯就是从头到尾,当我读完第一部分的时候,先不说里面有些算法如何精妙,我对第一部分最大的领悟就是它在教你怎么针对一个编程问题写好一个正确不冗余的程序。开篇我们可以理解就是正确沟通前提下正确的理解问题,如果一个问题你理解有一点失误可能导致的就是后续所有工作功亏一篑。在理解正确的前提下,你要考虑一个精妙的算法,‘懒’程序员往往不会先动手去编程,他们往往会想出至少两个解决方案,第三部门就是明确算法之后我们要用一种数据结构或者多种数据结构的组合来设计程序结构,注意到现在我们还没有开始具体的代码实现,一切可以用伪代码勾勒在你的纸上,下一步就是写代码了,第四章tell你如何写出正确的程序包括具体内容例如断言等技巧,既然写完了初步程序你需要保证程序的正确性!

  这本书的智慧还得在日后慢慢品酌。

时间: 2024-10-21 05:35:04

《编程珠玑》阅读笔记——Ⅱ的相关文章

编程珠玑阅读笔记01

薄薄的一本书,丝毫无愧于珠玑两个字. 看了第一章,我对这本书佩服得五体投地.一个简洁的小例子,几个看似简单的算法,实际上包含了很多算法设计的思想.看完第一章,我对数据库的几种外排算法有了更深层次的理解 习题:位图和位向量来表示集合 例如集合{1,2,3,5,8,13}可表示为:`0 1 1 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0` (从左到右为第0~19位) 文中巧妙的对整数集合排序的思路分三步:  1. 数组所有位初始为0 2. 将输入的整数n当作index来用,出

《编程珠玑》---笔记。浏览此文,一窥此书。

第一章: 磁盘排序:对于一个提出的问题,不要未经思考就直接给出答案.要先深入研究问题,搞清楚这个问题的特点,根据这个特点,可能有更好的解决方案. 比如:文中:最初的需求只是"我如何对磁盘文件排序". 我们首先想到了经典的归并排序. 但,进一步了解到排序的内容是10000000个记录,每条记录都是一个7位整数,且只有1M可用的内存.每条记录不相同. [位示图法,详见我的关于排序的博文] 第二章: 三个问题: 1.给定一个包含32位整数的顺序文件,它至多只能包含40亿个这样的整数,并且整数

《编程珠玑》笔记:数组循环左移

问题描述:数组元素循环左移,将包含 num_elem 个元素的一维数组 arr[num_elem] 循环左移 rot_dist 位.能否仅使用数十个额外字节的存储空间,在正比于num_elem的时间内完成数组的旋转? 一:Bentley's Juggling Alogrithm 移动变量 arr[0] 到临时变量 tmp,移动 arr[rot_dist] 到 arr[0],arr[2rot_dist] 到 arr[rot_dist],依此类推,直到返回到取 arr[0] 中的元素,此时改为从 t

Swift 编程思想 阅读笔记

Swift 编程思想,第一部分:拯救小马html, body {overflow-x: initial !important;}.CodeMirror { height: auto; } .CodeMirror-scroll { overflow-y: hidden; overflow-x: auto; } .CodeMirror-lines { padding: 4px 0px; } .CodeMirror pre { padding: 0px 4px; } .CodeMirror-scrol

JavaScript DOM编程艺术-阅读笔记

语句JavaScript编写的代码必须嵌在一份html/XHTML 文档中才能得以执行. <!DOCTYPE html> <html> <head> <script type="text/javascript"> JavaScript goes here …… </script> </head> <body> Mark-up goes here…… </body> </html>

[2014-11-24]高质量C++C编程指南 - 阅读笔记

C++ 语言可以用const来定义常量,也可以用 #define来定义常量.但是前者比后者有更多的优点: const常量有数据类型,而宏常量没有数据类型.编译器可以对前者进行类型安全检查.而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边际效应). 有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试. 需要对外公开的常量放在头文件中,不需要对外公开的常量放在定义文件的头部.为便于管理,可以把不同模块的常量集中存放在一个公共的头文件中. 不

《高质量C\C++编程》阅读笔记 第一章

第一章 文件结构 分为两个文件 1.头文件:保存程序的声明. C/C++都是".h"为后缀 2.定义文件:保存程序的实现. C ".c"为后缀,C++ ".cpp"为后缀 1.1 版权和版本的说明 位置:头文件和定义文件的开头.(版本信息)(文件名称.标识符.摘要)(当前版本号.作者.完成日期)(版本历史信息). 1.2 头文件的结构 <xxxx.h> 三部分: 1.版本和版本声明. 2.预处理块. 3.函数和类结构声明. ifnde

《Unix环境高级编程》 阅读笔记之三 - 文件I/O

unix下错误大多数返回负整数或者错误码,0是错误码. 1.每个文件被打开时都会返回一个文件描述符 2.unix中标准输入 输出 错误码 文件描述符分别为 0 1 2,POSIX.1中被替换成常数 STDIN_FILENO,STDOUT_FILENO,STRERR_FILENO(在unistd.h文件中) 3.Open函数使用(不必记住,多写,多练,就记住了,不明白查手册,参数太多) 4.NAME_MAX=14,文件名如果超过这个值,会自动截短,不过BSD系统会报错(ENAMETOOLONG),

《Unix环境高级编程》 阅读笔记之四 - 文件和目录

1.三个stat函数: int stat(const char *p a t h n a m e, struct stat * b u f) ;int fstat(int f i l e d e s,struct stat * b u f) ;int lstat(const char *p a t h n a m e, struct stat * b u f) ; 包含在<sys/stat.h>中 各自功能:stat返回pathname有关的信息结构(文件表项?),fstat获取已在文件描述符

抽样算法 - 编程珠玑(续) 笔记

取样,从N个数中取出M个数. 当要求这M个数不重复时,就不是简单的 low + int (rand * (high + 1 - low)). 这时最简单的方法是 1 //Algorithm S 2 intialize set S to empty 3 Size := 0 4 while Size < M do 5 T := RandInt(1, N) 6 if T is not in S then 7 insert T in S 8 Size := Size + 1 Algorithm S 在极