分类 默认 下的文章

Jon Beatlay,

ACM 通讯(communications of the ACM)

awk

计算机程序设计艺术

Fred Brooks

人月神话

Steve Mc Godneell(唐纳德????

代码大全

科学美国人

cobol 怎样解题

如何快速计算一个月有多少天

简单统计一下这本书 4 出现的次数

本文的篇幅可能会过于长,且更新时间周期很长很长,所以请慢慢等待

第一章 开篇

需要对数据库的数据进行排序

密度较大

不能使用系统自带的排序函数

关于排序的几个点

磁盘上实现归并排序,现在仿佛这本书很是有必要去看

最近物联网的概念还是比较火的,那些低功率的芯片,例如 ESP8266,

文件中最多包含一千万条记录,每一条记录都是 7 位数的整数

(尽管机器有许多兆字节的内存,但是排序功能只是大系统中的一部分,所以大概只有 1MB 的内存(其实这个算是相当奢侈了,ESP8266 里面只有 140K 来着

每个整数最多出现一次,

看到这里,其实有点基础Base的就会想到一个叫做桶排序的算法,因为不重复,所以可以用 bool 类型进行桶排序(也可以叫做位图法之类的

(七位数其实就是美国的座机电话号码

(由于几个小时就有一次请求Request,所以排序时间不能太长

可以通过反复读入,进行归并排序,借用外部的文件进行中间存储。但是读写次数过多,也会很影响速度

不过那个时候的软件开发速度真的是完全比不上现在,现在一个排序算法哪需要写一个星期


graph LR;

    A --> B;

    B --> C;

    C --> B;

    B --> D;

就算一个桶排序,也不需要数个小时,这本书的初版是真的很老了,但是就是火的一批

桶排序(位图表示法)适用于数据量很大,不重复,稠密的情况,如果是一个很稀疏的数列,使用这种方法就会格外浪费空间

多趟算法

时间——空间折中与双赢

课后题

  1. 如果不缺内存,如何使用一个具有库的语言来实现一种排序算法以表示和排序集合

  2. 如何使用位逻辑运算(如与、或、位移)来实现位向量

  3. 运行时效率是设计目标的一个重要组成部分,所得到的程序需要足够高效。在你自己的系统上实现位图排序并度量其运行时间。该时间与系统排序的运行时间以及习题1中排序的运行时间相比如何?假设n为10000000,且输入文件包含1000000个整数

  4. 如果认真考虑了习题3,你将会面对生成小于n且没有重复的k个整数的问题,最简单的方法就是使用前k个正整数。这个计算的数据集合将不会明显地改变位图方法的运行时间,但是可能会歪曲系统排序的运行时间。如何生成位于0至n-1之间的k个不同的随即顺序的随机Random整数?尽量是你的程序简短且高效。

  5. 那个程序员说他有1MB的可用存储空间,但是我们概要描述的代码需要1.25MB的空间。它可以不费力气地索取到额外的空间。如果1MB空间是严格边界,你会推荐如何处理呢?你的算法地运行时间又是多少?

  6. 如果哪个程序员说的不是每个整数最多出现一次,而是每个整数最多出现10词,你又如何建议他呢?你的解决方案如何随着可用存储空间总量地变化而变化?

  7. [R. Weil] 本书1.4节中面熟的程序存在一些缺陷。首先是假定输入中没有出现两次地整数,如果某个数出现超过一次的话,会发生什么?在这种情况下,如何修改程序来调用错误处理函数?当输入整数小于零或大于等于n时,又会发生什么?如果某个输入不是数值又如何?在这些情况下,程序该如何处理?程序还应该包含那些明智地检查?描述一些用以测试程序地小型数据集合,并说明如何正确处理上述及其他地不良情况。

  8. 当那个程序员解决该问题的时候,美国所有地免费电话地区号都是800。现在免费电话的区号包括800、877和888,而且还在增多,如何在1MB空间内完成对所有这些免费电话号码的排序》如何将免费电话号码存储在一个一个集合中,要求可以实现非常快速的查找以判定一个给定的免费电话号码是否可用或者已经存在?

  9. 使用更多的空间来换取更少的运行时间存在一个问题:初始化空间本身需要消耗大量的时间。说明如何设计一种技术,在第一次访问响亮的项时将其初始化为 0.你的方案应该使用常量时间进行初始化和向量访问,使用的额外空间应正比于向量的大小。因为该方法通过进一步增加空间来减少出场我的时间,所以仅在空间很廉价、时间很宝贵且向量很稀疏的情况下才考虑使用。

  10. 在成本低廉的隔日送达时代之前,商店允许顾客通过电话订购商品,并在几天后上门自取。商店的数据库使用客户的电话号码作为其检索的主关键字(客户知道他们自己的电话号码而且这些关键字几乎都是唯一的)。你如何组织商店的数据库,以允许高效的插入和检索操作?

  11. 在 20 世纪 80 年代早期,洛克希德公司加利福尼亚州桑尼维尔市工厂的工程师们每天都要将许多由计算机辅助设计(CAD)系统生成的图纸从工厂送到位于圣克鲁斯市的测试站。虽然仅有 40 公里远,但使用汽车快递服务Services每天都需要一个多小时的时间(由于交通阻塞和山路崎岖),花费 100 美元。请给出新的数据传输方案并估计每一种方案的费用。

  12. 载人航天的先驱们很快就意识到在外太空的极端环境下实现顺利书写。民间盛传美国国家宇航局(NASA)花费 100 万美元研发出一种特殊的钢笔来解决这个问题。那么,前苏联又会如何解决相同的问题呢?

1.7 深入阅读

这个小问题仅仅是令人痴迷的程序说明问题的冰山一角。要深入研究这个重要的课题,参见 Michael Jackson 的 Software Requirements & Specifications 一书(Addison-Eesley 出版社 1995 年出版)。该书用一组独立成章却又相辅相成的短文,以令人愉悦的方式阐述了这个艰涩的课题。

在本章所描述的实例研究中,程序员的主要问题与其说是技术问题,还不如说是心理问题:他不能解决问题,是因为他企图解决错误的问题。问题的最终解决,是通过打破他的概念壁垒,进而去解决一个较简单的问题而实现的。 James L. Adams 所著的 Conceptuel Blockbusting 一书(第 3 版由 Perseus 出版社于 1986 年出版)研究了这类跳越,概述通常是触发创新性思维的理想选择。虽然该书不是专为程序员而写的,其中的许多内容却特别适用于编程问题。Adams 将概念壁垒定义为“阻碍解题者理解问题或者取得答案的心智壁垒”。习题 10、习题 11 和 习题 12 激励读者去打破一些这样的壁垒

Michael Jackson 软件工程先驱。他于 20 世纪 70 年代提出了影响深远的面向数据结构的 Jackson 方法

第二章 啊哈!算法

《啊哈!灵机一动》

数字排序

字符串位移

字符串匹配

二分搜索

——寻找数列中缺失的数字

(限制条件时内存较少,但是有文件可以使用)

众所周知,二分搜索程序要正确运行很困难。

(但事实上,内卷玩家,二分搜索都是小 case 了

二分搜索还可以用于别的方面,并不止局限于有序数列

第三章 数据决定数据结构

第四章 编写正确的程序

第五章 编程小事

第六章 程序性能分析

第七章 粗略估算

第八章 算法设计技术

第九章 代码调优

第十章 节省空间

第十一章 排序

第十二章 取样问题

第十三章 搜索

第十四章 堆

第十五章 字符串

$$W = \left(\left[\frac{c}{4}\right]-2c+y+\left[{\frac{y}{4}}\right]+\left[\frac{13(m+1)}{5}\right]+d-1\right) \bmod 7$$

w:星期; w 对 7 取模得:0 - 星期日,1 - 星期一,2 - 星期二,3 - 星期三,4 - 星期四,5 - 星期五,6 - 星期六

c:世纪 - 1(前两位数)

y:年(后两位数)

m:月(m 大于等于 3,小于等于 14,即在蔡勒公式中,某年的 1、2 月要看作上一年的 13、14 月来计算,比如 2003 年 1 月 1 日要看作 2002 年的 13 月 1 日来计算)

d:日

[ ] 代表取整,即只要整数部分。

https://www.zhihu.com/question/42879877

https://baike.baidu.com/item/%E8%94%A1%E5%8B%92%E5%85%AC%E5%BC%8F/10491767?fr=aladdin

https://blog.csdn.net/S_999999/article/details/88723201

https://www.cnblogs.com/faterazer/p/11393521.html

https://blog.csdn.net/qq_40655981/article/details/98457824

https://www.cnblogs.com/ZhaoxiCheung/p/6803376.html

天问

先秦 · 屈原

曰:遂古之初,谁传道之?

上下未形,何由考之?

冥昭瞢暗,谁能极之?

冯翼惟象,何以识之?

明明暗暗,惟时何为?

阴阳三合,何本何化?

圜则九重,孰营度之?

惟兹何功,孰初作之?

斡维焉系,天极焉加?

八柱何当,东南何亏?

九天之际,安放安属?

隅隈多有,谁知其数?

天何所沓?十二焉分?

日月安属?列星安陈?

出自汤谷,次于蒙汜。

自明及晦,所行几里?

夜光何德,死则又育?

厥利维何,而顾菟在腹?

女岐无合,夫焉取九子?

伯强何处?惠气安在?

何阖而晦?何开而明?

角宿未旦,曜灵安藏?

不任汩鸿,师何以尚之?

佥曰“何忧,何不课而行之?”

鸱龟曳衔,鲧何听焉?

顺欲成功,帝何刑焉?

永遏在羽山,夫何三年不施?

伯禹愎鲧,夫何以变化?

纂就前绪,遂成考功。

何续初继业,而厥谋不同?

洪泉极深,何以窴之?

地方九则,何以坟之?

河海应龙?何尽何历?

鲧何所营?禹何所成?

康回冯怒,墬何故以东南倾?

九州安错?川谷何洿?

东流不溢,孰知其故?

东西南北,其修孰多?

南北顺椭,其衍几何?

昆仑悬圃,其尻安在?

增城九重,其高几里?

四方之门,其谁从焉?

西北辟启,何气通焉?

日安不到?烛龙何照?

羲和之未扬,若华何光?

何所冬暖?何所夏寒?

焉有石林?何兽能言?

焉有虬龙,负熊以游?

雄虺九首,鯈忽焉在?

何所不死?长人何守?

靡蓱九衢,枲华安居?

灵蛇吞象,厥大何如?

黑水玄趾,三危安在?

延年不死,寿何所止?

鲮鱼何所?鬿堆焉处?

羿焉彃日?乌焉解羽?

禹之力献功,降省下土四方。

焉得彼嵞山女,而通之於台桑?

闵妃匹合,厥身是继。

胡维嗜不同味,而快鼌饱?

启代益作后,卒然离蠥。

何启惟忧,而能拘是达?

皆归射鞫,而无害厥躬。

何后益作革,而禹播降?

启棘宾商,《九辨》《九歌》。

何勤子屠母,而死分竟地?

帝降夷羿,革孽夏民。

胡射夫河伯,而妻彼雒嫔?

冯珧利决,封豨是射。

何献蒸肉之膏,而后帝不若?

浞娶纯狐,眩妻爰谋。

何羿之射革,而交吞揆之?

阻穷西征,岩何越焉?

化而为黄熊,巫何活焉?

咸播秬黍,莆雚是营。

何由并投,而鲧疾修盈?

白蜺婴茀,胡为此堂?

安得夫良药,不能固臧?

天式从横,阳离爰死。

大鸟何鸣,夫焉丧厥体?

蓱号起雨,何以兴之?

撰体协胁,鹿何膺之?

鳌戴山抃,何以安之?

释舟陵行,何之迁之?

惟浇在户,何求于嫂?

何少康逐犬,而颠陨厥首?

女歧缝裳,而馆同爰止。

何颠易厥首,而亲以逢殆?

汤谋易旅,何以厚之?

覆舟斟寻,何道取之?

桀伐蒙山,何所得焉?

妺嬉何肆,汤何殛焉?

舜闵在家,父何以鳏?

尧不姚告,二女何亲?

厥萌在初,何所亿焉?

璜台十成,谁所极焉?

登立为帝,孰道尚之?

女娲有体,孰制匠之?

舜服厥弟,终然为害。

何肆犬豕,而厥身不危败?

吴获迄古,南岳是止。

孰期去斯,得两男子?

缘鹄饰玉,后帝是飨。

何承谋夏桀,终以灭丧?

帝乃降观,下逢伊挚。

何条放致罚,而黎服大说?

简狄在台,喾何宜?

玄鸟致贻,女何喜?

该秉季德,厥父是臧。

胡终弊于有扈,牧夫牛羊?

干协时舞,何以怀之?

平胁曼肤,何以肥之?

有扈牧竖,云何而逢?

击床先出,其命何从?

恒秉季德,焉得夫朴牛?

何往营班禄,不但还来?

昏微循迹,有狄不宁。

何繁鸟萃棘,负子肆情?

眩弟并淫,危害厥兄。

何变化以作诈,而后嗣逢长?

成汤东巡,有莘爰极。

何乞彼小臣,而吉妃是得?

水滨之木,得彼小子。

夫何恶之,媵有莘之妇?

汤出重泉,夫何辠尤?

不胜心伐帝,夫谁使挑之?

会朝争盟,何践吾期?

苍鸟群飞,孰使萃之?

列击纣躬,叔旦不嘉。

何亲揆发足,周之命以咨嗟?

授殷天下,其位安施?

反成乃亡,其罪伊何?

争遣伐器,何以行之?

并驱击翼,何以将之?

昭后成游,南土爰底。

厥利惟何,逢彼白雉?

穆王巧梅,夫何为周流?

环理天下,夫何索求?

妖夫曳炫,何号于市?

周幽谁诛?焉得夫褒姒?

天命反侧,何罚何佑?

齐桓九会,卒然身杀。

彼王纣之躬,孰使乱惑?

何恶辅弼,谗谄是服?

比干何逆,而抑沈之?

雷开阿顺,而赐封之?

何圣人之一德,卒其异方?

梅伯受醢,箕子详狂?

稷维元子,帝何竺之?

投之于冰上,鸟何燠之?

何冯弓挟矢,殊能将之?

既惊帝切激,何逢长之?

伯昌号衰,秉鞭作牧。

何令彻彼岐社,命有殷国?

迁藏就岐,何能依?

殷有惑妇,何所讥?

受赐兹醢,西伯上告。

何亲就上帝罚,殷之命以不救?

师望在肆,昌何识?

鼓刀扬声,后何喜?

武发杀殷,何所悒?

载尸集战,何所急?

伯林雉经,维其何故?

何感天抑墬,夫谁畏惧?

皇天集命,惟何戒之?

受礼天下,又使至代之?

初汤臣挚,后兹承辅。

何卒官汤,尊食宗绪?

勋阖梦生,少离散亡。

何壮武历,能流厥严?

彭铿斟雉,帝何飨?

受寿永多,夫何久长?

中央共牧,后何怒?

蜂蛾微命,力何固?

惊女采薇,鹿何佑?

北至回水,萃何喜?

兄有噬犬,弟何欲?

易之以百两,卒无禄?

薄暮雷电,归何忧?

厥严不奉,帝何求?

伏匿穴处,爰何云?

荆勋作师,夫何长?

悟过改更,我又何言?

吴光争国,久余是胜。

何环穿自闾社丘陵,爰出子文?

吾告堵敖以不长。

何试上自予,忠名弥彰?