Algorithms & Data Structure
文章平均质量分 83
SuperFC
算法狂热爱好者,数据挖掘门外汉,从事存储行业!
展开
-
零零散散学算法之详解数据压缩算法(上)
深入解析数据压缩算法正文 所谓数据压缩,是指在不丢失信息的前提下,缩减数据量以减少存储空间,提高传输、存储和处理效率的一种技术方法。或者是按照一定的算法对数据进行重新组织,减少数据的冗余和存储的空间。 能实现数据压缩的本质原因就是数据的冗余性。 本系列将分为上下两个部分,介绍四种数据压缩算法,分别为Huffman压缩原创 2012-09-12 22:45:38 · 17600 阅读 · 27 评论 -
零零散散学算法之详解最小生成树
深入解析最小生成树正文 所谓最小生成树,就是在一个具有N个顶点的带权连通图G中,如果存在某个子图G',其包含了图G中的所有顶点和一部分边,且不形成回路,并且子图G'的各边权值之和最小,则称G'为图G的最小生成树。 由定义我们可得知最小生成树的三个性质: •最小生成树不能有回路。 •最小生成树可能是一个,原创 2012-05-01 00:20:43 · 13937 阅读 · 32 评论 -
自己动手写printf
有这样一个简单的问题:求从1加到100的和S(S= 1+2+3+...+99+100),并打印出S。这道题应该是我们刚刚开始学编程语言时老师让我们做的题目吧一个for或者while循环S就搞定了,接下来就是输出S ,我相信对于当时的你百分之百会用printf(),即使现在遇到类似的问题,在大多情况下你也会用printf的。你有没有想过,我们为什么就要用它呢?printf函数是怎样写的?你是否仔细的原创 2011-10-05 16:20:37 · 1903 阅读 · 1 评论 -
零零散散学算法之详解几种数据存储结构
影响空间规模的几种数据存储结构正文 所谓数据存储结构,就是数据的元素与元素之间在计算机中的一种表示,它的目的是为了解决空间规模问题,或者是通过空间规模问题从而间接地解决时间规模问题。我们知道,随着输入的数据量越来越大,在有限的内存里,不能把这些数据完全的存下来,这就对数据存储结构和设计存储的算法提出了更高的要求。 本文将介绍几种存储结构,分原创 2012-04-04 22:06:17 · 9216 阅读 · 21 评论 -
零零散散学算法之详解二叉查找树
深入解析二叉查找树正文 所谓二叉查找树,实质上是按二叉树的结构来组织的,这样的树可以用链表结构来表示,其中每一个节点都是一个对象。 二叉查找树中元素(也可称为关键字)的存储方式总是满足以下几个性质: 1.若二叉树的左子树不为空,则左子树上所有节点的值均不大于其根节点的值; 2.若二叉树的右子原创 2012-05-11 20:56:18 · 2750 阅读 · 0 评论 -
重温经典之赫夫曼(Huffman)编码
先看看赫夫曼树假设有n个权值{w1,w2,…,wn},构造一个有n个叶子结点的二叉树,每个叶子结点权值为wi,则其中带权路径长度WPL最小的二叉树称作赫夫曼树或最优二叉树。 赫夫曼树的构造,赫夫曼最早给出了带有一般规律的算法,俗称赫夫曼算法。如下:(1)根据给定的n个权值{w1,w2,…,wn}构造n棵二叉树的集合F={T1,T2,…,Tn},其中Ti中只有一个权值为wi的根结点,原创 2011-11-14 17:25:52 · 5140 阅读 · 15 评论 -
零零散散学算法之多串匹配
多字符串匹配第一节 提出问题 所谓多串匹配,就是给定一些模式串(子串),在一段正文(主串)中找到第一个出现的任意一个模式串的位置。具体来说就是:给定m个长度分别为L1、L2......Lm的模式串数组A[1..L1]、A[1..L2]......A[1..Ln],假设主串为一个长为n的数组T[1..n],那么在主串中的某一位置X,对于满足匹配的任意串Y,会满足A[1.原创 2012-03-29 23:08:07 · 3799 阅读 · 0 评论 -
零零散散学算法之详解RMQ & LCA
深入理解RMQ & LCA 正文 第一节 RMQ、LCA概述 LCA:Lowest Common Ancestor,译为最近公共祖先。其解释就是说:在有根树中,找出树中任意两个节点最近的公共祖先,或者说找到任意两个节点离树根最远的公共祖先。 RMQ:Range Minimum Query,译为区间最小值查询。其解释就是说:对于含有N个原创 2012-10-23 23:49:20 · 3073 阅读 · 0 评论 -
零零散散学算法之浅析内存管理的方式
解析内存管理的方式正文 说到内存分配,我们立刻就会想到malloc()、calloc()等申请内存的接口,说到内存分配的算法,我们会想到Buddy和Slab等分配算法。那么你有没有思考过,申请的内存是如何管理的呢?管理的方式都有哪些?这就是本文将要讨论的。 本文将介绍两种内存管理的方法:链表法和比特位法。第零节原创 2012-12-15 14:10:59 · 5096 阅读 · 11 评论 -
零零散散学算法系列之目录(持续更新)
零零散散学算法系列第一篇:零零散散学算法之详解几种数据存储结构第二篇:零零散散学算法之详解数据压缩算法(上)第三篇:零零散散学算法之详解数据压缩算法(下)第四篇:零零散散学算法之详解最小生成树第五篇:零零散散学算法之详解几种最短路径第六篇:零零散散学算法之详解二叉查找树第七篇:零零散散学算法之详解RCM & L原创 2013-01-25 19:38:23 · 2494 阅读 · 1 评论 -
零零散散学算法之详解数据压缩算法(下)
深入解析数据压缩算法 前序 开始本文之前,先回顾一下上篇。上篇讲解了几种数据压缩算法中的两种:Huffman压缩算法和RLE压缩算法。 详解数据压缩算法(上):http://blog.csdn.net/fengchaokobe/article/details/7934865 正文 本文将详解数据压缩算法的后两种算原创 2012-09-26 23:07:00 · 6082 阅读 · 2 评论 -
算法的重要性
算法的重要性第一节 绪论 算法是干什么用的?我们为什么要学习算法?算法重不重要呢?在这引用一下《算法导论》里面的回答:所谓算法就是一个明确的计算过程,它取一个或者一组值作为输入,并产生一个或者一组值作为输出。换句话说,算法就是一个给好路线图、界限明确的任务。因此,一坨计算斐波那契堆的代码就是一个特定算法的实现。甚至在某种意义上可以说,两个数的相加也是一个算法,不过它很简翻译 2012-08-18 20:46:44 · 8230 阅读 · 8 评论 -
中位数之第K小的线性选择算法(续)
前一段时间翻译了中位数之第K小的线性选择算法,由于翻译水平有限,感觉对上文不是很满意。不过中位数算法的大致意思我想已经在上文中说的比较清楚了,在这我就不多说了。本文的主要目的是对于算法的实现。 最近抽了些时间把该算法做了,基本是按照上文的思路走的。突然心情激动了一原创 2011-09-23 10:53:28 · 1900 阅读 · 2 评论 -
重温经典之简单的加密
开头语 “两个光棍放在一起就是一双筷子”,很经典的一句话!此时此刻,不管各位棍友都是什么样的心情,还是祝各位棍友节日快乐!闲言少叙,书接正文。本文所探讨的加密应该属于最简单加密方法之一吧!具体加密过程如描述:比如要加密一个文本文件,我会将一次读出文本中的每个字符,然后通过已经规定的密匙(key)加密,然后将其写进另一个文本文件中,一直如此,直至源文本中的内容全部被加密,并原创 2011-11-11 13:01:29 · 1483 阅读 · 0 评论 -
零零散散学算法之找出数组中重复的数---总结篇
找出数组中重复的数前序 最近一直在看v_JULY_v的专栏,从中学到了很多关于算法方面的知识,也受到了很大的启发。我相信喜欢算法的朋友,看过他的博文之后也会有这种想法。前段时间参加了一些面试,从他的专栏里学到的算法给予了我不小的帮助,这让我在面试的时候轻松了不少。他的博文我将会继续关注和学习。 好了,我们言归正传。关于找出数组中重复数原创 2012-03-17 20:01:43 · 5434 阅读 · 3 评论 -
由n阶幻方问题引发的思考
由n阶幻方问题想到的前序 最近在学习一些经典的算法,搞得头昏脑涨,就想换换脑子。在家里的旧书堆里面乱翻,无意中将一本具有十多年历史的小学数学奥林匹克竞赛的书发掘了出来,能放到现在挺不容易的,就拿起来随便翻翻。看了看目录,一个个熟悉的问题又一次的展现在了我的面前,看着看着就翻到了n阶幻方这块(其实那时候我们不这么叫)。记得当时学这个问题的时候就感觉特别有意思,现在看看原创 2012-04-08 17:19:15 · 7693 阅读 · 16 评论 -
中位数之第K小的线性选择算法
1973年,Blum、Floyd等几位大仙合并一体,写了一篇题为 “Time bounds for selection” 的章,给出了一种在数组中选出第k小元素的算法,俗称"中位数之中位数算法"。该算法从理论上保证了最坏情形下的线性时间复杂度(O(n))。而一个简单的排序算法像快速排序的时间复杂度是O(nlogn),利用类似于快速排序的做法是:首先对该无序数组进行排序(O(nlogn)),然后进行翻译 2011-09-18 01:47:03 · 5009 阅读 · 4 评论 -
最大流问题:增广路径算法的比较
最大流问题:增广路径算法的比较 这篇文章我们将重温最大流问题,实现一些最有名的增广路径算法的实际分析的目标。我们将讨论的这几种算法的复杂度在O(n*m*m)到O(n*mlogU)之间,并且从讨论的结果中得到在实践中最有效的一种。正如我们所想的,理论上的复杂度并不能揭示该算法在实际中的价值。 这篇文章所针对的是熟悉网络流理论的基本知识的读者。如果你对网络流理论翻译 2012-05-25 22:23:03 · 29392 阅读 · 6 评论 -
最大流问题:增广路径算法的比较之序
零零散散学算法系列最大流问题之序 最大流问题之增光路径算法的比较:http://blog.csdn.net/fengchaokobe/article/details/7584781参考文献:[1] Ravindra K. Ahuja, Thomas L. Magnanti, and James B. Orlin. Network Flows: Theory, Algo原创 2012-04-19 20:55:24 · 4391 阅读 · 0 评论 -
零零散散学算法之详解几种最短路径
深入解析最短路径算法正文 第一节 问题的提出及解决方法 所谓最短路径问题,可以说有两种情况来描述。 描述一:在图论中,指的是寻找图中两个节点之间的最短距离。如下图 描述二:在现实生活中,指的是找到从一个地方到另一个地方的最近距离。如下图 上述两种情况的本质是一样的,即求一个点到另一个点的最短路径。好了原创 2012-04-19 20:54:50 · 13355 阅读 · 4 评论 -
零零散散学算法之再叙字符串匹配
零零散散学算法之再叙字符串匹配 正文 字符串匹配问题这是个老话题了,而我们也热衷于学习和探讨这个问题,并且我们也经常会用到它。比如说,我们用vim打开一个文本文件,要在这个文件中查找某一个字符串时,我们只需在底行模式下输入/String即可;再比如,在linux终端中,我们要把当前目录下所有的c文件打印出来,那么这时候我们就会利用正则表达式来进行匹配操作(所有的c文件原创 2013-05-13 13:25:13 · 8268 阅读 · 16 评论