数据结构和算法
文章平均质量分 65
shrek2014
这个作者很懒,什么都没留下…
展开
-
CRC 通用算法
/** CRC通用算法 ** version 1.0 ** by Yinpei ** Wuhan University ** 2006年11月18日 **/#define CRC_NUM_N //定义每种CRC的校验码比特数/*CRC_NUM_32 == 32CRC_NUM_24 == 24CRC_NUM_原创 2010-09-16 16:36:00 · 850 阅读 · 0 评论 -
B树
B 树又叫平衡多路查找树。一棵m阶的B 树 (m叉树)的特性如下:树中每个结点最多含有m个孩子(m>=2);除根结点和叶子结点外,其它每个结点至少有[ceil(m / 2)]个孩子(其中ceil(x)是一个取上限的函数);若根结点不是叶子结点,则至少有2个孩子(特殊情况:没有孩子的根结点,即根结点为叶子结点,整棵树只有一个根节点);所有叶子结点都出现在同一层,叶原创 2012-03-29 16:19:17 · 431 阅读 · 0 评论 -
如何提高程序的效率(一)
――设计优秀的算法(From Programming Peals by Jon Bentley)一个简单的问题,往往有许多不同的解决方案,那么如何找到一个相比之下比较好(事实上很难找到绝对好的方法)的方案呢?我们需要一个优秀的算法,优秀的算法能够给很大程度上提高程序的效率。问题描述:问题的输入是具有n个整数的向量x,输出是输入向量的任何连续子向量中的最大和。例如,如果输入向量包含下面1原创 2010-04-18 10:41:00 · 458 阅读 · 0 评论 -
12个球,一个次品,一个天平,称3次得出哪个是次品,并且判断次品是重还是轻
有12个球,一个次品,有一个天平,称3次得出哪个是次品,怎样称?把三个球分成三组,假设为:(1、2、3、4)..①;(5、6、7、8)..②;(9、10、11、12)..③.第一称:把①与②组放在天平两端称。结果有两种情况:一种是平;另一种是不平,不妨假设组①重于组②。 先来看平的情况。则1-8号球全部正常。次品必在组③,即在9-12号球中。 在9-转载 2012-05-15 19:48:15 · 2214 阅读 · 0 评论 -
快速排序的各种版
最近重新研究了快速排序,整理了一下快速排序的各种版本。一、单向扫描ok,先来看单向扫描。算法导论上版本是这样的:PARTITION(A, p, r)1 x ← A[r] //以最后一个元素,A[r]为主元2 i ← p - 13 for j ← p to r - 1 //注,j从p指向的是r-1,不是r。4 do if A[j原创 2012-05-18 13:47:45 · 622 阅读 · 0 评论 -
判断一个单链表是否有环及环的链接点(转)
给定一个单链表,只给出头指针h:1、如何判断是否存在环?2、如何知道环的长度?3、如何找出环的连接点在哪里?4、带环链表的长度是多少? 解法:1、对于问题1,使用追赶的方法,设定两个指针slow、fast,从头指针开始,每次分别前进1步、2步。如存在环,则两者相遇;如不存在环,fast遇到NULL退出。2、对于问题2,记录下问题1的碰转载 2012-10-10 16:32:54 · 751 阅读 · 0 评论 -
双堆求中位数
求数组中位数的方法:1、排序2、双堆3、findk效率分别是nlog(n)、nlog(n)、log(n)用堆维护中位数的意思是说,设计两个堆,第一个堆存放小于中位数的元素,第二个堆存放大于中位数的元素。下面是双堆维护中位数的语言描述:1、初始化的时候设置两个变量分别记录两个堆【左堆和右堆】的元素的个数2、取第一个元素【d[0]】作为初转载 2012-10-11 10:55:32 · 3838 阅读 · 4 评论 -
从海量数据中找出中位数
题目:在一个文件中有 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。只写出思路即可(内存限制为 2G的意思就是,可以使用2G的空间来运行程序,而不考虑这台机器上的其他软件的占用内存)。关于中位数:数据排序后,位置在最中间的数值。即将数据分成两部分,一部分大于该数值,一部分小于该数值。中位数的位置:当样本数为奇数时,中位数=(N+1)/2 ; 当样本数为偶数时,中位数为N/2与转载 2012-10-11 12:50:38 · 1140 阅读 · 0 评论