上一页 1 ··· 5 6 7 8 9
摘要: 算法设计关于递归方程T(n)=aT(n/b)+f(n)之通用解法在算法设计中经常需要通过递归方程估计算法的时间复杂度T(n),本文针对形如T(n)=aT(n/b)+f(n)的递归方程进行讨论,以期望找出通用的递归方程的求解方式。算法设计教材中给出的Master定理可以解决该类方程的绝大多数情况,根据Master定理:o-渐进上界、w-渐进下界、O-渐进确界。设a≥1,b>1为常数,f(n)为函数,T(n)=aT(n/b)+f(n)为非负数,令x=logba:1. f(n)=o(nx-e),e>0,那么T(n)=O(nx)。2. f(n)=O(nx),那么T(n)=O(nx logn)。3. f 阅读全文
posted @ 2012-07-28 15:06 Florian 阅读(5538) 评论(0) 推荐(0) 编辑
摘要: 关于如何评价洗牌质量的猜想洗牌算法是卡牌类游戏中必须使用的算法,本质上说洗牌算法的目的是使某个给定的顺序更加的无序,因此出现了很多种洗牌算法。我们不重点讨论如何洗牌,我们将眼光关注于洗出的牌是否达到我们预期的要求,以及如何衡量洗出的牌无序的程度。首先先看一个简单有效的洗牌算法。一、一个简单的洗牌算法一个比较容易实现的洗牌算法是这样的,通过随机选出两张牌进行交换,通过多次这样的重复操作,就能达到洗牌的目的。事实证明这种洗牌方式还是比较可行,最重要的是比较简单,代码如下。//洗牌算法,随机交换数组的两个元素,交换数组长度次为一次洗牌template<classT>voidmess(Td 阅读全文
posted @ 2012-07-28 15:01 Florian 阅读(1256) 评论(2) 推荐(0) 编辑
摘要: 一个简单的Windows Socket可复用框架说起网络编程,无非是建立连接,发送数据,接收数据,关闭连接。曾经学习网络编程的时候用Java写了一些小的聊天程序,Java对网络接口函数的封装还是很简单实用的,但是在Windows下网络编程使用的Socket就显得稍微有点繁琐。这里介绍一个自己封装的一个简单的基于Windows Socket的一个框架代码,主要目的是为了方便使用Windows Socket进行编程时的代码复用,闲话少说,上代码。熟悉Windows Socket的都知道进行Windows网络编程必须引入头文件和库:#pragmaonce/********************公用 阅读全文
posted @ 2012-07-28 14:25 Florian 阅读(5956) 评论(6) 推荐(2) 编辑
摘要: 编译器构造 一、 编译器简介 前面谈到静态链接器构造的基本流程,最后提到所构造的链接器若要能正常工作的前提是需要构造一个能生成符合链接器输入文件格式的编译器,本文构造一个符合这种具体格式要求编译器。但是编译器的直接编译的结果一般是汇编语言文件,这种文件是不能满足上述静态链接器的需求的,因此在它们之间 阅读全文
posted @ 2012-07-03 11:13 Florian 阅读(4201) 评论(12) 推荐(10) 编辑
摘要: 静态链接器构造 一、 链接器简介 众所周知,高级语言程序编写后需要经过编译、汇编、链接、加载的步骤才能在机器上正常执行。Gcc的处理步骤更加复杂:如果是C语言程序(*.c)作为gcc的输入,gcc首先对高级语言程序进行预编译,然后利用文法分析程序将程序翻译为通用的中间代码,接着gcc对中间代码进行优 阅读全文
posted @ 2012-05-25 23:50 Florian 阅读(2032) 评论(5) 推荐(4) 编辑
上一页 1 ··· 5 6 7 8 9