1. 编程珠玑笔记一开篇

发布于 2022年 04月 10日 10:27

1.          编程珠玑笔记一开篇

从事于IT行业,如果不会编程,那蛤蟆只能呵呵了。

有些人将编程认识为敲字,所以一直是码农。有些人将编程认识为COPY,所以一直是搬运工。我们不是工程师,我们只是IT的搬运工~

其实编程可以不一样,是一个洞察力和创造力的集合。需要我们不停磨练编程技巧和基本的设计原理。

 欢迎转载,转载请标明出处:blog.csdn.net/notbaron/ar…

1、     开篇

是一个外部排序的问题,题目如下图1

\

的确,一般我们想到的就是归并排序。

         由于内存有限,所以一次放入内存中的数量受到了限制。那么意味需要进行多趟的读写到内存,需要更多的IO次数。

         而作者是采用一个位的表示方法。用一个10位长的字符串来表示一个所有元素小于10的简单的非负整数集合。如{ 1 ,2  ,3, 5 , 8}

0 1 1 1 0 1 0 0 1 0

从左到右,表示0,1,2,3,4,5,6,7,8,9。如果为1,说明在集合中,为0说明不在集合中。

这样本来需要多个字节表示的数,通过一个位就实现了,空间瞬间就剩下了几十倍有木有?

这样就可以使用107个位,做多就是1.19M左右。但是这么多位中其实有很多稀疏位可以进行压缩的。伪代码实现如下图2,:

\

三个阶段就是,1、初始化位数组,2、判断该值是否存在,存在设置为1。3、根据位数组输出排序文件。       

 

2、     小结:

         给人一种耳目一新的感觉,的确是本好书,值得好好品味。后续比较蛤蟆会将编程珠玑中的每一章进行记录,根据需要删掉作者的一些“废话”,呈现最精简同时也是最核心的部分。

 

 

 

 

 

推荐文章