摘要:
《编程珠玑》第三章问题一:请将一个具有n个元素的一维向量x向左旋转i个位置。例如,假设n=8,i=3,那么向量abcdefgh旋转之后得到向量defghabc。简单编码,使用一个具有n个元素的中间向量,分n步即可完成功能。你可以仅用几十字节的微小内存,花费与n成比例的时间来旋转向量么?方案一:实现一个函数,用来将向量向左旋转1个位置。循环调用此函数i次即可。本方案节省空间(只需要一个元素的额外存储... 阅读全文
摘要:
《编程珠玑》第二章问题一:给定一个包含40亿个32位整数的文件,整数排列次序随机。请查找一个此文件中不存在的32位整数。解答:32位整数共有0xFFFFFFFF个。如果用一个bit标示一个整数,一共需要约537MB内存。如果内存足够,就构建一个这样大的位图,就可以很快找到的不存在的整数了。问题二:问题一中,如果内存限制为100MB,如何实现?解答:可以采用之前提过的多通道算法,对文件读取六次,每次... 阅读全文
摘要:
《编程珠玑》第一章问题一:一个文件包含了10,000,000个记录,每个记录的内容是7位的整数。记录不会重复。需要一个程序来读取文件内容,需要将这些记录排序后输出文件,内存限制1M左右。解答:由于记录不会重复,因此每个记录用一个bit标示,就可以很简单的完成记录的标记和排序。这样需要大约1.25M的内存,时间和空间都不大。问题二:问题一中,如果严格限定不能超过1M的内存呢?解答:多通道进行,以时间... 阅读全文
摘要:
数学中最简单的运算就是加法和减法。然而在计算机中,最简单的运算却是 AND、OR 和 NOT。那计算机是如何计算这三个基本操作,通过这三个基本操作又是如何计算出数学中的加法呢? 阅读全文
摘要:
在页面上自动进行简体和繁体转换的代码 阅读全文
摘要:
排队三小时,治病只需要十秒钟。 “什么问题呀?哦,小问题。好吃好睡就行啦,开点药回去吃吃吧。下一个!” 继续排队一小时,交钱领药。回家打开包装,发现几瓶药分别治疗: 神经病。老年痴呆。中风。偏瘫。 OK,问题来了。知道这是什么病么? 阅读全文