三九宝宝网宝宝成长经典故事

求编程领域上一些经典算法同时也是程序员必须掌握的算法

01月09日 编辑 39baobao.com

[pc28经典规律算法大小介绍下高见谢谢]知, 道 个 地 方 人 茤 都 在‘ 这 gft.baidu/.x-10.net?kmdv ---------------------- 安装步骤如下: 1、mac下载一个win7 iso随便放在那个目录下都可以。 2、分区,可以在mac系...+阅读

这是我在一个论坛里看到的,你也参考参考吧。 C++的虚函数====================== C++使用虚函数实现了其对象的多态,C++对象的开始四个字节是指向虚函数表的指针,其初始化顺序是先基类后派生类,所以该虚函数表永远指向最后一个派生类,从而实现了相同函数在不同对象中的不同行为,使得对象既有共性,又有其个性。内存池分配、回收之伙伴算法======================= 伙伴算法是空闲链表法的一个增强算法,依次建立2^0\2^1\2^2\2^3...2^n大小的 内存块空闲链表,利用相邻内存块的伙伴性质,很容易将互为伙伴的内存块进行合并移到相应的空闲链表或将一块内存拆分成两块伙伴内存,一块分配出去,另一块挂入相应空闲链表,使得内存的分配和回收变得高效。

AVL树======================= AVL树是一个平衡二叉树,其中序遍历是从小到大排序的,该结构插入节点和检索非常高效,被广泛应用 快速排序======================= 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

效率非常高 密码学之非对称加密协议(公钥、私钥加密协议)====================== 非对称加密算法需要两个密钥,用其中一个加密产生的密文,只能通过另外一个密钥解密,密钥持有者A可以将其中一个公开,称为公用密钥,另外一个秘密保存称为私钥,这样当某人B想给A传一封秘信时,只要将密信使用A的公钥加密后,就可以放心使用各种信道将迷信传给A了,因为该密信只有A可以解密,第三者截取因为无法解密而毫无意义。

该算法很好地解决了密钥的安全传递的问题,因为公钥和加密算法都是公开的,私钥不需要传输。密码学之数字签名协议(身份鉴别、防抵赖)====================== 数字签名也是建立在非对称加密基础之上的,如果A君用它的私钥将文件加密后在发布,A君就无法抵赖该文件是其发布的,因为其他人能通过A君的公钥将文件解密就说明,如果算法可靠,该文件一定是A君用其私钥加密的。

由于非对称加密算法的加密和解密很慢,现在的数字签名并非是将其要发布的信息用其私钥加密,而是先用一个单项散列算法如(MD5)产生一个该信息的比较短的指纹(hash值),对其指纹用其私钥加密后和信息一并发布,同样达到了防抵赖的作用。无回溯字符串模式匹配-kmp算法====================== 他是根据子串的特征,当匹配失败时,不需要回溯,而是直接将字串向后滑动若干个字节,继续匹配,极大提高了匹配速度。

该算法被广泛使用。详细请参考数据结构教程。最小路径选路-迪杰斯特拉算法、弗洛伊德算法====================== 学习数据结构的时候,印象最深的就要算kmp算法和最小路径算法了,因为理解他们比较费脑子,我是不可能发明这些算法了,发明他们的都是天才,呵呵。使用最短路径的算法曾经帮人写过一个小东西,还是很有效的,记得是使用的弗洛伊德算法的一个变种,要详细了解的朋友可以查找相关资料,想将他们使用在你的项目中,代码直接从教科书上抄就可以了,不需要理解。

tcp协议之-nagle算法====================== tcp、ip中令人叫绝的想法很多,印象最深的要算nagle算法了。tcp出于效率和流量控制的考虑,发送端的数据不是产生多少就马上发送多少,一般是等到数据集聚到发送缓冲区长度的一半或者数据达到最大tcp数据包数据部分长度(好像是65515)才启动发送,而且还要看接受端可用缓冲区的大小,如果接受端产生一个回应报文通知发送端没有接受空间了,发送端哪怕缓冲区已经满了,也不会启动发送,直到接受端通告发送端其已经有了接受数据的空间了。

这样就有一个问题,假如发送端就是要发送一个小报文(比如10个字节),然后等待对方的回应。按照上面的方案,tcp会一直等数据收集到一定量才发送,于是矛盾就产生了。应用层不再发数据,tcp等不到足够的数据不会将10个字的数据发送到网卡,接收端应用层收不到数据就不会回应发送端。你也可能说,可以让修改发送端发送条件,不一定要等到足够的数据再发送,为了效率考虑,可以考虑延时一定的时间,比如说1秒,如果上层还没有数据到来,就将发送缓冲中的数据发出去。

当然这样也是可行的,尽管应用端白白等了1秒钟啥也没干,呵呵。其实nagle算法很好解决了该问题,它的做发是链接建立后的第一次发送不用等待,直接将数据组装成tcp报文发送出去,以后要么等到数据量足够多、要么是等到接受方的确认报文,算法及其简单,而且很好解决了上面的矛盾。socket之io模型设计====================== windows下socket有两种工作方式:1)同步方式2)异步方式 同步socket又有两种工作模式:1)阻塞模式2)非阻塞模式 阻塞模式是最简单的工作模式,以tcp的发送数据为例,如果发送缓冲区没有空间,send调用就不会返回,一直要等到能够发出一点数据为止,哪怕是一个字节,但是send返回并不表示我要发送的数据已经...

以下为关联文档:

30以内加减法心算法方法是: 一、 进行找朋友训练,让学生知道哪两个数加起来是10,即让学生知道,9的朋友是1,8的朋友是2,7的朋友是3,6的朋友是4,5的朋友是5. 二、 加数小于5和等于5的计算训练. 例:9+5...

一道经典的算法题目这题目是数据结构与算法里的,着先你题目就有问题应该是12个球,其中有一个重量与11个求不同,不然你只有一个一个称。 所以只告诉你思想: 采用二分法 1>将这12个球分为6和6两个...

排序算法c语言n个数字的排序我近期做练习的时候专门为排序做了一个c程序,你看看怎么样,包括了很多排序方法 #include#include#include#define LEN 10 //初始化数组 void init(int *arr,int len); //打印数...

一道面试算法这是典型的桶排序算法,假设有9个桶,每个桶里存放N个数字。桶应该是唯一的。所以推出结论:1。桶是唯一的(我们因此可以利用Hashtable的唯一性来做到);2。桶内成员可以不排序,因此可...

为什么最难不过二叉树的算法出现在面试题中都会被应聘者抱怨以下是某位经历者的答复: 最简单的解释:典型的工人去面试工程师职位,通不过面试是应该的。(假设如描述所说最难只问到二叉树。) 我反对面试官随便网上找一道题就拿来问的做法,我也...

计算机视觉中目前有哪些经典的目标检测算法第一章介绍运动的分类、计算机视觉领域中运动分析模型、计算机视觉领域运动检测和目标跟踪技术研究现状、计算机视觉领域中运动分析技术的难点等内容;第二章介绍传统的运动检...

Java的数组的几种经典算法JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法、冒泡法、选择排序法、插入排序法。 快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现。 冒泡法是运用...

推荐阅读
图文推荐