数据结构与算法
文章平均质量分 62
Chinainvent
追梦少年
展开
-
递归、闭合形式解(closed form solution)
一、递归的意义。我以前一直误解了递归的意义,并为自己能在程序中多写几个递归高兴。现在我发现错了!递归显然能让程序看起来非常简洁,但是,由于会引起函数的多次调用,将大大的降低程序的效率。那我们讨论递归干什么?基于以下这两个愿因:第一,也是最重要的原因,递归告诉了我们一种思考问题的方法。因为,确实是有一些问题,如果不用递归的思想去思考,我们将束手无策!最明显的例子就是汉诺塔的问题。但是,正如前面提到的原创 2005-12-18 20:59:00 · 9985 阅读 · 0 评论 -
Totem协议(SRP/RRP)讲解PPT
原创 2011-11-18 13:56:39 · 3689 阅读 · 0 评论 -
日志系统的设计模式
从事服务器程序开发的工程师们,几乎不可避免地需要使用到日志系统(Logging System)。如果从头开发一个服务器程序,我们有若干开源的日志系统可供选择,例如:Java语言中,Log4j是个不错的选择;Python语言中,有logging类;C语言中,有:Log4c、libqb等。这些开源的日志系统,几乎都使用到相同的设计模式,不同之处在于实现语言、实现方法,以及附加的一些额外功能。今天,我想原创 2012-01-06 17:49:31 · 10987 阅读 · 0 评论 -
把消息长度写到消息包中
今天在SOCKET编程时,遇到一个问题。通常SOCKET的消息包中,需要包含一个长度字段,这个字段存放整个消息包的字节数。如果消息包采用字符串格式,这个描述长度的字段本身就是一个可变的字符串,它的位数会影响到消息包的长度。例如,我们定义了如下的消息包格式: # msg_len , msg_content $这个消息包的格式,非常简单,首先以#字符开头,然后是原创 2010-01-09 02:20:00 · 1296 阅读 · 3 评论 -
文件外排心得
五一劳动节,我努力的劳动。 原本就没有玩的打算,因为寒假翻译了一篇涉及过多成人话题的外文,被导师笑了一番后,坚决挡后。于是一切都从头开始。想想我花了大部分的假期时间,查找了一个个陌生的单词,力求准确无误的翻译出原文,竟是如此下场,我泪长流。。。[em]e35[/em] 但是,我告诉自己---当有些事不得不做的时候,就用心去做吧!四月28号回到学校,在宿舍梦游了几天---在我们宿舍,脏、乱、原创 2007-05-02 15:37:00 · 1680 阅读 · 0 评论 -
致CSDN的一封信
CSDN编辑,各位网友,以及关注这个博客的全国各族人民: 你们好!十多天没更新博客,是我的失职,我向各位致以最真诚的道歉。 为什么没有更新?你们是不是怀疑,我在外面吃喝拉风?是不是以为,腾讯的面试,把我打击得神经衰弱?我再次向媒体澄清:绝没有这回事!请大家不要随意猜测,本人对程序的热爱是刚刚地! 这段时间,我没有闲着,请大家相信我。我真的是一个好学的好孩子。为了证明,我不仅原创 2006-11-28 23:31:00 · 1728 阅读 · 3 评论 -
广东北电长沙站的程序笔试题
我没去参加笔试,但据比木同学说,广电的笔试很基础,总共就四道题:1、josephus数小孩问题。2、二分查找法。3、用栈实现递归。4、有关通信、网络方面的汉译英、英译汉。用栈实现递归,我以前专门写过一篇文章。读者可以去翻来看看。现在,我自己来解答前两个问题。1、josephus问题的描述:编号是1,2,……,n的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。一开始任选一个正整原创 2006-10-22 17:23:00 · 2333 阅读 · 0 评论 -
数据结构复习篇:内排序
为了描述的简洁,以下讨论,我们都假设从大到小进行降序排序。-、冒泡排序:思路:对于一个数组A[n] = {A0, A1, A2, …, A(n-1)},第一步:把第一个元素A0与A1~A(n-1)逐一进行比较,一旦A0第二步:因为A0已经是最大值,所以,现在只需把A1~A(n-1)看作一个元素个数少1的子数组,按第一步的方式进行排序。。。。程序: /********原创 2006-10-14 16:29:00 · 2072 阅读 · 3 评论 -
一道网易笔试题(加入最优解法)
最近看完了表、栈、队列、二叉树、二叉搜索树、堆、Huffuman树的数据结构。突然想试试自己的程序水平有没有提高(似乎有点太急于求成^_^)。恰逢自己刚给网易投了一份简历,于是,在百度上搜了一些网易的笔试题。结果,其中这道题,一下把我难住了: 如图: 设“1”的坐标为(0,0) “7”的坐标为(-1,-1) 编写一个小程序,使程序做到输入坐标(X,Y)之后显示出相应的数原创 2006-10-13 04:31:00 · 6828 阅读 · 22 评论 -
数据结构复习篇:队列
队列是一种先进先出(FIFO)的线性表。跟栈一样,它们的pop()、push()操作的时间复杂度都为1。同样有两种实现,基于数组的AQueue和链式LQueue的。难点在于基于数组的。为了保证pop()和push()的时间复杂度为1,要用到“循环存储”的思想。这个思想就是把一个固定长度数组看作是一个首尾相接的“圈”。这样,我们的“入队”push()和“出队”pop()操作,就可以直接向队尾加入一个原创 2006-10-04 00:17:00 · 1394 阅读 · 0 评论 -
数据结构复习篇:用栈实现递归
也许大家会疑问:复习完栈应该到队列了吧。我开始也是这样想的,但用栈实现递归,是一个难点。说实话,我以前学习的时候,就在这一处卡住了,当时我烦躁了好几天,但可能由于突然被什么东西转移了注意力,所以就这样跳过去了。不知道用栈实现递归,也确实不大影响后面的学习,但我可以肯定,如果你觉得世界上有一些东西难以理解而不愿面对,那自信将会由此削弱。当然,遇到困难可以适当地把它放下,但逃避应该是暂时的,必须鼓励自原创 2006-10-02 16:17:00 · 19230 阅读 · 9 评论 -
数据结构复习篇:栈
二、栈栈是一种“发育不良”的线性表,它具有与线性表相同的存储结构(基于数组的或基于链于的),但栈的“缺陷”---不能像线性表那样具有插入、删除操作---反而给了它独有的特色。在后面将会发现,递归,可以用栈来实现。 在时间复杂度上,基于数组的栈AStack和链式栈LStack,在push()、pop()操作上,都是一个时间常数1。在我的测试中,10万次push()和10万次pop()后,基于原创 2006-09-30 22:21:00 · 2200 阅读 · 0 评论 -
数据结构复习篇:线性表
数据结构与算法,是编写高质量程序的内功之一,在打算步入社会寻找自己的第一份工作之际,我准备用一周左右的时间来复习一遍数据结构与算法。在任何时候重视基础知识,都不是一件多余的事。复习用书:《数据结构与算法分析 C++版》第二版 [美] Clifford A.Shaffer著,张铭、刘晓丹 等译 电子工业出版社一、线性表线性表是这样一种表结构,它的元素element存放在一个连续的表中,这原创 2006-09-29 17:50:00 · 3209 阅读 · 2 评论 -
无锁化编程-基础篇
原创 2014-04-19 19:22:02 · 3291 阅读 · 1 评论