04 2015 档案

摘要:一:概述 一些工程应用只会使用教科书式的标准数据结构,但是也会有些应用需要对现有的数据结构进行少许的创新和改造,只有很少的情况会创造全新的数据结构。 二:动态顺序统计 顺序统计:n个元素中第i个顺序统计量,就是具有第i小关键字的元素。对于一个无序的集合,可以在O(n)的时间内得到任意的顺序统计量。 阅读全文
posted @ 2015-04-27 21:27 gqtc 阅读(212) 评论(0) 推荐(0)
摘要:一:红黑树的其他特点 1:对于一颗用RB-INSERT插入n个结点形成的红黑树,如果n>1,则该树至少有一个红结点。 2: 如果用RB-INSERT将节点x插入一颗红黑树,然后接着用RB-DELETE删除,则结果红黑树是否和原始红黑树一样? 不一样,因为RB-INSERT可能会进行旋转而改变树的结构 阅读全文
posted @ 2015-04-26 18:32 gqtc 阅读(207) 评论(0) 推荐(0)
摘要:红黑树的删除操作花费O(lg n)时间,删除算法与二叉搜索树的删除类似,首先红黑树的TRANSPLANT版本有些许不同,主要是因为红黑树使用nil结点代替NULL指针造成的: RB-TRANSPLANT(T, u, v) if u.p ==T.nil T.root= v else if u== u. 阅读全文
posted @ 2015-04-26 18:11 gqtc 阅读(239) 评论(0) 推荐(0)
摘要:红黑树的插入可在O(lg n)完成,红黑树的插入类似于二叉搜索树的插入,为了尽量维护红黑树的性质,将插入的新节点标记为RED,然后调用RB-INSERT-FIXUP对红黑树的性质进行维护,RB-INSERT代码如下: RB-INSERT(T,z) y = T.nil x = T.root while 阅读全文
posted @ 2015-04-26 18:02 gqtc 阅读(218) 评论(0) 推荐(0)
摘要:因二叉搜索树的字典操作的时间复杂度都是O(h),所以,当二叉搜索树的高度较小时,可以获得较快的执行。只有当二叉搜索树变得“平衡”时,高度才会达到最低。 红黑树是许多“平衡”搜索树中的一种,可以保证在最坏情况下基本动态集合操作的时间为O(lg n)。 一:概念与性质 红黑树是一种二叉搜索树,同时它又具 阅读全文
posted @ 2015-04-26 17:47 gqtc 阅读(238) 评论(0) 推荐(0)
摘要:1:概念 二叉搜索树也叫二叉排序树,它支持的操作有:SEARCH, MINIMUM, MAXIMUM, PREDECESSOR, SUCCESSOR, INSERT, DELETE。所以,一颗二叉搜索树既可以作为一个字典,又可以作为一个优先队列。 二叉搜索树的基本操作时间与这棵树的高度成正比。二叉搜 阅读全文
posted @ 2015-04-26 17:04 gqtc 阅读(243) 评论(0) 推荐(0)
摘要:在前面讨论的各种数据结构中,记录在各种结构中的相对位置是随机的,和在记录的关键字之间不存在有确定的关系,因此在查找记录是需要进行一系列和关键字的比较。 而理想的情况是不希望进行任何的比较,一次存取便能得到所查记录。那就必须在记录的存储位置和它的关键字之间建立一种确定的关系f,使每个关键字和结构中有一 阅读全文
posted @ 2015-04-26 16:46 gqtc 阅读(501) 评论(0) 推荐(0)
摘要:一:基本数据结构之栈队列链表树 1:数据结构就是一种动态的可变集合,不同的算法对动态集合有不同的操作,支持插入,删除,测试元素是否属于集合这些操作的动态集合成为字典。集合中的对象,一般都有关键字,有的对象还有卫星数据。 动态集合上的操作可以分为:查询操作和修改操作,任何具体应用通常只会进行下面操作的 阅读全文
posted @ 2015-04-25 16:27 gqtc 阅读(392) 评论(0) 推荐(0)
摘要:1:n个元素组成的集合,第i个顺序统计量,就是该集合中第i小的元素。所以,集合中的最小值就是第1个顺序统计量,最大值就是第n个顺序统计量。中位数是所属集合的“中点元素”,当n是奇数的时候,中位数唯一,位于(n+1)/2处。如果n是偶数,中位数有两个,分别位于n/2和(n/2) + 1。 2:选择问题 阅读全文
posted @ 2015-04-23 22:41 gqtc 阅读(223) 评论(0) 推荐(0)
摘要:之前的排序算法都是比较排序:在排序的最终结果中,各元素的次序依赖于他们之间的比较。任何比较排序在最坏情况下,都要经历Ω(n lgn)次比较,所以,归并排序和堆排序都是渐进最优的。 除了比较排序之外,还有其他的排序方法,但是都必须满足一定的前提条件,这些排序算法的下界不再是Ω(n lgn),而可以达到 阅读全文
posted @ 2015-04-23 22:28 gqtc 阅读(177) 评论(0) 推荐(0)
摘要:1:快速排序 快速排序的最坏情况时间复杂度为Θ(n^2)。虽然最坏情况时间复杂度很差,但是快速排序通常是实际排序应用中最好的选择,因为它的平均性能很好。它的期望运行时间复杂度为Θ(n lg n),而且Θ(n lg n)中蕴含的常数因子非常小,而且它还是原址排序的。 2:基本思想 快速排序采用分治法进 阅读全文
posted @ 2015-04-22 21:41 gqtc 阅读(208) 评论(0) 推荐(0)
摘要:满二叉树:除最后一层无任何子节点外,每一层上的所有结点都有两个子结点(也可以这样理解,除叶子节点外的所有结点均有两个子结点。节点数达到最大值。所有叶子结点必须在同一层上) 1:堆排序的时间复杂度为O(nlgn)。具有空间原址性的特点,也就是任意时刻只需常数个额外元素空间存储临时数据。 2:堆是一颗近 阅读全文
posted @ 2015-04-22 21:16 gqtc 阅读(379) 评论(0) 推荐(0)
摘要:数学之美番外篇:快排为什么那样快 By 刘未鹏(pongba) 目录 0. 前言 1. 猜数字 2. 称球 3. 排序 3.1 为什么堆排比快排慢 3.2 为什么快排其实也不是那么快 3.3 基排又为什么那么快呢 4. 信息论!信息论? 5. 小结 0. 前言 知道这个理论是在TopLanguage 阅读全文
posted @ 2015-04-22 09:11 gqtc 阅读(261) 评论(0) 推荐(0)
摘要:4:用RANDOM(0,1)实现RANDOM(a,b): 这道题的实现思路:这个题目相当于在能随机生成 0, 1 的前提下,要求随机生成 n=b-a+1 个整数。 1、把要生成的数标记为 a, a+1, a+2,..., b-a+1,…,b-1,b 2、取最小的 m,使得2^m >= n 3、通过随 阅读全文
posted @ 2015-04-19 17:34 gqtc 阅读(140) 评论(0) 推荐(0)
摘要:最大子数组,给定数组,在这个数组中找到这样的子数组:子数组的和是所有子数组中最大的(子数组必须是连续的)。 typedef struct { int max; int subbegin; int subend; }SUBMAX; #define NEINFINITE (0x80000000) #de 阅读全文
posted @ 2015-04-19 16:33 gqtc 阅读(265) 评论(0) 推荐(0)
摘要:1:Θ记号: 对一个给定的函数g(n),用Θ(g(n))来表示以下函数的集合: Θ(g(n))={f(n):存在正常量c1、c2 和 n0,使得对所有n≥n0,有0≤c1g(n)≤f(n)≤c2g(n)} 称g(n)是f(n)的一个渐近紧确界(asymptotically tight bound) 阅读全文
posted @ 2015-04-19 16:23 gqtc 阅读(308) 评论(0) 推荐(0)
摘要:1:插入排序:类似于扑克牌,为了将一张牌插入正确的位置,从右向左将它与已在手中的每张牌进行比较,这样,拿在手上的牌就总是排序好的。分析该算法的时间复杂度: 求和: 因此,最好运行时间为: 可以把运行时间表示为an+b。因此这是n的线性函数。 最差运行时间为: 把该最坏情况运行时间表示为an^2+bn 阅读全文
posted @ 2015-04-19 15:38 gqtc 阅读(187) 评论(0) 推荐(0)
摘要:1:对于有些问题,目前还不知道是否存在有效的算法,这些问题的一个子集是NP完全问题,对于NP完全问题:a是否存在有效算法是未知的;b如果任何一个NP问题存在有效算法,那么所有的NP完全问题都存在有效算法;c有些NP完全问题类似于一些已经有有效算法的问题。 2:如果两个算法,比如插入排序和归并排序,插 阅读全文
posted @ 2015-04-19 15:28 gqtc 阅读(188) 评论(0) 推荐(0)
摘要:一:客户端 本章总结的服务器程序设计范式,使用同一个客户端程序进行测试。客户端运行在和服务器处于同一个子网上的两个不同主机上。每个客户端同时派生5个子进程,每个子进程在与服务器依次建立500次连接,每次连接请求4000个字节的数据。因此,每个客户端将与服务端建立2500个连接。总共有... 阅读全文
posted @ 2015-04-06 09:49 gqtc 阅读(242) 评论(0) 推荐(0)
摘要:一:概述 在简单的回射服务例子中,客户端和服务器的交互步骤如下:客户从标准输入中读入一行文本,并写给服务器;服务器从网络输入读入这行文本,并回射给客户;客户从网络输入读入这行回射文本,并显示在标准输出上。下图描述了整个过程: 二:多进程的str_cli 其中客户端的s... 阅读全文
posted @ 2015-04-05 11:49 gqtc 阅读(369) 评论(0) 推荐(0)
摘要:一:广播1:概述 多播支持在ipv4中是可选的,在IPv6中却是必须的; IPv6不支持广播。使用广播的任何IPv4应用程序一旦移植到IPv6就必须改用多播重新编写; 广播和多播要求用于UDP或原始IP,它们不能用于TCP。2:广播地址 ... 阅读全文
posted @ 2015-04-04 21:21 gqtc 阅读(493) 评论(0) 推荐(0)
摘要:一:原始套接字 1:原始套接字作用 原始套接字提供普通的TCP和UDP套接字所不能提供的以下3种能力: 有了原始套接字,进程可以读写ICMP, IGMP等分组。比如ping程序就是使用原始套接字发送ICMP回射请求并接收ICMP回射应答。 ... 阅读全文
posted @ 2015-04-04 17:42 gqtc 阅读(691) 评论(0) 推荐(0)