数据结构与算法
dennis_zane
这个作者很懒,什么都没留下…
展开
-
scheme实现huffman编码的完整代码
来自sicp的完整代码,包括书中给出的代码以及习题,实现了huffman树的生成、解码、编码过程,总共67行代码,同样的代码有空用java、ruby改写下,看看会有什么不同。ruby 代码 (define (make-leaf symbol weight) (list 'leaf symbol weight)) (define (leaf? o...2007-07-23 08:56:46 · 124 阅读 · 0 评论 -
scheme解决约瑟夫环问题(续)
sicp的习题3.22,也就是以消息传递的风格重新实现队列,我的解答如下:(define (make-queue) (let ((front-ptr '()) (rear-ptr '())) (define (set-front-ptr! ptr) (set! front-ptr ptr)) (define (set-rear-ptr! ptr) (set! ...2008-04-16 10:31:01 · 131 阅读 · 0 评论 -
lua 5.0的实现(翻译)4,5
4、 表 Table是lua的主要——实际上,也是唯一的——数据结构。Table不仅在语言中,同时也在语言的实现中扮演着重要角色。Effort spent on a good implementation of tables isrewarded in the language,because tables are usedfor several internal tasks, ...2008-04-07 18:00:51 · 180 阅读 · 0 评论 -
关于binary search
编程珠玑Column 4关于binary search的部分相当精彩,1946年就有人发表binary search,但直到1962第一个正确运行的算法才写出来。尽管算法描述看起来简单明了,但是要写的正确却是有许多地方要仔细考虑。作者着重强调的是对程序正确性的分析方法,仔细分析方法的pre-condition, invariant,和post-condition。g9老大翻译过Jos...2008-04-02 10:15:53 · 110 阅读 · 0 评论 -
scheme解决约瑟夫环问题
看了javaeye上一个解决约瑟夫环的问题的帖子,就想能不能用scheme来解决。如果采用推导出的数学公式来处理当然很简单了:(define (joseph n m) (define (joseph-iter init s) (if (> init n) (+ s 1) (joseph-iter (+ init 1) (remain...2008-03-20 19:18:14 · 77 阅读 · 0 评论 -
用递归计算阶乘咋不行呢?
读《代码大全2》,已经读了一半,喘口气。总结八个字:百科全书,受益匪浅。小到一个赋值语句、一个循环的编写,大到需求分析、架构设计,无所不包,看后半部分目录,更是扯到了重构、软件工艺、程序员的性格特征这样的话题。恰好手边的工作暂时比较有闲,可以实践下“创建高质量的代码”中的部分建议,晚上读书,第二天就重构,乐在其中。这一部分中对设计、子程序、类、变量、语句的处理建议,可能你平常已经在这么...2008-03-18 19:40:33 · 135 阅读 · 0 评论 -
写操作系统?看看这个(转载)
今天在pongba的邮件列表里看到了这个《免费电子书<使用开源软件——自己动手写操作系统>》 只能说太酷了,china-pub上一直有本书《自己动手写操作系统》,牛人看到这本书使用的是商业软件做示范,于是动念想是不是能使用开源软件来实现书中所有的demo,于是就有了这本宝贵的电子书。 项目主页:http://share.solrex.cn/WriteOS/...2008-02-22 17:54:49 · 64 阅读 · 0 评论 -
scheme中文编程
受javaeye上的《Ruby中文编程》启发,帖子中有人提到如果if这样的关键字都可以定义成中文,那就是真正的中文编程。那时我就想到,这个其实要在scheme中实现是多么简单,将sicp书中的解释器稍微修改下就可以了,只要修改解析的部分即可。解释器的完整代码放后面,我们先看看有趣的例子:(定义 你 '男)(当 ((是 你 '男) (打印 '男人是泥土做的)) ((是 ...2009-03-20 23:27:00 · 657 阅读 · 0 评论 -
位图排序
《编程珠玑》第一章第一题就相当的精彩,做个笔记。题目如下:输入: 一个包含n个正整数的文件,每个正整数小于n,n等于10的7次方(一千万)。并且文件内的正整数没有重复和关联数据。输出: 输入整数的升序排列 约束: 限制在1M内存,充足的磁盘空间 假设整数占32位,1M内存可以存储大概250000个整数,第一个方法就是采用基于磁盘的合并排序算法,第二个办法就是将0-9999999...2008-01-07 15:32:02 · 120 阅读 · 0 评论 -
远程调用的语义
远程调用由于涉及到服务器和客户端等多个节点以及需要通过网络通讯等,会引入更多的故障可能。本地调用的语义都是恰好一次,不会多也不会少。而远程调用的语义就比较复杂,依据三个选择将产生不同的语义:1)重发请求消息:客户端是否重发请求,直到收到应答或者认定服务器故障为止2)过滤重复消息:当客户端重发请求时候,服务器是否过滤重复的请求3)重传结果:服务器是否保存结果消息的历史...原创 2008-08-19 23:51:53 · 375 阅读 · 0 评论 -
TCP的TIME_WAIT状态
主动关闭的Socket端会进入TIME_WAIT状态,并且持续2MSL时间长度,MSL就是maximum segmentlifetime(最大分节生命期),这是一个IP数据包能在互联网上生存的最长时间,超过这个时间将在网络中消失。MSL在RFC1122上建议是2分钟,而源自berkeley的TCP实现传统上使用30秒,因而,TIME_WAIT状态一般维持在1-4分钟。 TIME...2008-06-23 01:27:58 · 65 阅读 · 0 评论 -
善用表驱动法
最近碰到个需求,计算游戏得分的规则,类似这样:游戏人数第一名获得赌注第二名获得赌注第三名获得赌注第四名获得赌注二人100%0%——二人(出现2个第1名时)50%50% 三人70%30%...2008-04-17 19:52:26 · 150 阅读 · 0 评论