记得第一次拿起这本是在06年,那时还是大二呢,呵呵。在图书馆看到了这本书,信手翻了翻,郁闷的是没看懂啊。时隔多年再次拿起这本书,自己有了更好的底子,慢慢看,也可以看懂啦~
正如第一章标题所说的,这章是个开题。不过一上来就抛出了个算法设计题,还对时间空间复杂度都有要求。
题目是这样的:
一个最多包含n个不重复的正整数的文件,每个数都小于107。要求对这些数进行排序,且只有大约1MB的空间可用。
书中给出的算法如下。
由于最多只有1000万个数,且这些数不重复,故可考虑用位图或位向量的方法。
使用一个具有1000万个位的字符串表示这些数:当整数i在文件中存在时,字符串的第i位为1。这样,1000万个位约占1.19MB,符合题目对空间的要求。程序的伪代码如下:
/*1. 设置所有的位为0*/
for i = [0, n)
bit[n] = 0;
/*2. 若文件中存在整数i,设置第i位为1*/
for 文件中所有整数i
bit[i] = 1;
/*3. 根据字符串的位,依次输出整数*/
for i = [0, n)
if bit[i] == 1
output
就是以上三步曲。思想挺简单的,也很节约空间。不过,如果一次只从文件读入一个数的话,做了1000万次的读入操作,会不会很耗时间?这里先打个问号。另外,该方法充分利用了题目的数的特点,不重复,若不满足这个条件,还得先做些处理。第一章习题中对此有涉及。
后记:
实际上,只需要读入一次文件即可,打开文件后,不断读入文件中的每个整数,应该不用花太多的时间。
分享到:
相关推荐
《编程珠玑》读书笔记
编程珠玑书后源代码编程珠玑书后源代码编程珠玑书后源代码编程珠玑书后源代码编程珠玑书后源代码编程珠玑书后源代码
我觉得不错,和大家分享! 编程珠玑 编程珠玑 编程珠玑
本资源只是“编程珠玑之第二章questionC: 求变位词问题”的简单的测试数据。
编程珠玑是一本提升coding能力不可多得的好书,看书时,可以结合这个笔记,突出重点。
编程珠玑编程珠玑
编程珠玑和编程珠玑续两本,上传赚点分,填充填充填充
《编程珠玑(续)》是计算机...书中涵盖了程序员操纵程序的技术、程序员取舍的技巧、输入和输出设计以及算法示例,这些内容组成一个有机的整体,如一串串珠玑展示给程序员。 《编程珠玑(续)》适合各级程序员阅读参考。
编程珠玑(第二版)答案
书的内容围绕程序设计人员面对的一系列实际问题展开。作者Jon Bentley 以其独有的洞察力和创造力,引导读者理解这些问题并学会解决方法,而这些正是程序员实际编程...《编程珠玑(第2版)》是计算机科学方面的经典名著。
编程珠玑 第二版 中文版 英文版 大家可以看看 还附有源代码哦!
编程珠玑第二版及源代码实现(C/C++) 如果让程序员们列举他们喜欢的书籍,Jon Bentley的《编程珠玑》一定可以归于经典之列。如同精美的珍珠出自饱受沙砾折磨的牡蛎,程序员们的精彩设计也来源于曾经折磨他们的实际...
编程珠玑续、编程珠玑续本、编程珠玑续本、编程珠玑续本
编程珠玑II(编程珠玑·续) 扫描版6.56M pdf格式
编程珠玑 第2版 azw3格式电子书,适合kindle阅读 Jon Bentley是位于新泽西州Murray Hill的朗讯贝尔实验室计算机科学研究中心的技术委员会委员,Jon自1998年就成为Dr. Dobb's Joumal杂志的特约编辑,他的“编程珠玑”...
编程珠玑第二版英文版
算法经典书籍编程珠玑第2版,这本书除了讲算法,更是讲述解决问题的思想。
《编程珠玑》第2版中文PDF+源代码,仅仅用于个人学习,传播获利违法
《编程珠玑》第一版是我早期职业生涯中阅读过的对我影响较大的书籍之一,在书中首次接触到的很多观点都让我长期受益。作者在这一版本中做了重要更新。新增加的很多例子让我耳目一新。 ——Steve McConnell,《代码...