数据结构与算法
文章平均质量分 95
hguisu
这个作者很懒,什么都没留下…
展开
-
数据结构-栈和队列
1.栈1.1栈的定义栈是一种特殊的线性表。其特殊性在于限定插入和删除数据元素的操作只能在线性表的一端进行。如下所示:结论:后进先出(Last In First Out),简称为LIFO线性表。栈的基本运算有六种:构造空栈:InitStack(S)、判栈空: StackEmpty(S)、判栈满:StackFull(S)、进栈:Push(S,x原创 2012-06-19 12:53:15 · 113106 阅读 · 19 评论 -
进程调度算法
调度算法是指:根据系统的资源分配策略所规定的资源分配算法。1. 先来先服务 1. 先来先服务调度算法。先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度, 也可用于进程调度。FCFS算法比较有利于长作业(进程),而不利于短作业(进程)。由此可知,本算法适合于CPU繁忙型作业, 而不利于I/O繁忙型的作业(进程)。2. 短进程优先调度算法原创 2007-12-01 17:03:00 · 5888 阅读 · 0 评论 -
细数二十世纪最伟大的十大算法
参考论文:The Best of the 20th Century: Editors Name Top 10 Algorithms。By Barry A. Cipra。地址:http://www.uta.edu/faculty/rcli/TopTen/topten.pdf。博主说明:1、此20世纪的十大算法,除了快速排序算法,或者快速傅里叶变换算法,其它算法只要稍作了解即可。原创 2012-11-13 17:33:25 · 6595 阅读 · 1 评论 -
数学算法那些事
1. 三种方法求最大公约数1、连续整数检测法. 此算法比较简单:/** * greatest common divisor * * @param int $a * @param int $b */function gcd($a, $b){ $t = $a> $b ?$b :$a; while ($t>0){ if($a%$t=原创 2012-12-24 19:59:06 · 4274 阅读 · 1 评论 -
大数据计算:如何仅用1.5KB内存为十亿对象计数
Big Data Counting: How To Count A Billion Distinct Objects Using Only 1.5KThis is a guest post by Matt Abrams (@abramsm), from Clearspring, discussing how they are able to accurately estimate原创 2012-12-25 18:58:22 · 21800 阅读 · 3 评论 -
解读Google分布式锁服务
背景介绍在2010年4月,Google的网页索引更新实现了实时更新,在今年的OSDI大会上,Google首次公布了有关这一技术的论文。在此之前,Google的索引更新,采用的的批处理的方式(map/reduce),也就是当增量数据达到一定规模之后,把增量数据和全量索引库Join,得到最新的索引数据。采用新的索引更新系统之后,数据的生命周期缩短了50%,所谓的数据生命周期是指,数据从原创 2013-01-06 20:45:40 · 4844 阅读 · 0 评论 -
回溯法 -数据结构与算法
1.回溯法算法思想:定义: 回溯法(探索与回溯法)是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。1、回溯法适用:有许多问题,当需要找出它的解集(全部解)或者要求回答什么解是满足某些约束条件的最优解时,往往要使用原创 2012-07-02 17:30:47 · 23056 阅读 · 7 评论 -
Trie树:应用于统计和排序
1. 什么是trie树 1.Trie树 (特例结构树) Trie树,又称单词查找树、字典树,是一种树形结构,是一种哈希树的变种,是一种用于快速检索的多叉树结构。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。 Trie的核心思想是空间换时间。原创 2012-10-31 17:08:31 · 40060 阅读 · 9 评论 -
使用Storm实现实时大数据分析
摘要:随着数据体积的越来越大,实时处理成为了许多机构需要面对的首要挑战。Shruthi Kumar和Siddharth Patankar在Dr.Dobb’s上结合了汽车超速监视,为我们演示了使用Storm进行实时大数据分析。CSDN在此编译、整理。简单和明了,Storm让大数据分析变得轻松加愉快。当今世界,公司的日常运营经常会生成TB级别的数据。数据来源囊括了互联网装置可以捕获原创 2012-12-31 10:12:12 · 78309 阅读 · 11 评论 -
海量数据处理算法—Bit-Map
1. Bit Map算法简介 来自于《编程珠玑》。所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。2、 Bit Map的基本思想 我们先来看一个具体的例子,假设我们要对0-7内的5个元素(4,7,2,5,3)排序(这原创 2012-08-21 16:14:19 · 46219 阅读 · 29 评论 -
二叉树的应用详解 - 数据结构
概述:平衡树——特点:所有结点左右子树深度差≤1排序树——特点:所有结点“左小右大字典树——由字符串构成的二叉排序树判定树——特点:分支查找树(例如12个球如何只称3次便分出轻重)带权树——特点:路径带权值(例如长度)最优树——是带权路径长度最短的树,又称 Huffman树,用途之一是通信中的压缩编码。1. 二叉排序树(二叉查找树Binary Sear原创 2012-06-25 11:45:05 · 41599 阅读 · 2 评论 -
信息论的熵
信息论的熵原创 2014-05-28 16:48:53 · 50341 阅读 · 12 评论 -
海量数据处理 算法总结
前面我们说海量数据处理提到,从算法的角度去考虑处理海量数据。1. Bloom Filter【Bloom Filter】Bloom Filter(BF)是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。它是一个判断元素是否存在集合的快速的概率算法。Bloom Filter有可能会出现错误判断,但不会漏掉判断。也就原创 2012-08-14 16:52:19 · 25208 阅读 · 7 评论 -
链接分析算法之:主题敏感PageRank
前面的讨论提到。PageRank忽略了主题相关性,导致结果的相关性和主题性降低,对于不同的用户,甚至有很大的差别。例如,当搜索“苹果”时,一个数码爱好者可能是想要看 iphone 的信息,一个果农可能是想看苹果的价格走势和种植技巧,而一个小朋友可能在找苹果的简笔画。理想情况下,应该为每个用户维护一套专用向量,但面对海量用户这种方法显然不可行。所以搜索引擎一般会选择一种称为主题敏感PageRan原创 2012-09-23 13:11:59 · 14834 阅读 · 3 评论 -
链接分析算法之:SALSA算法
SALSA算法的初衷希望能够结合PageRank和HITS算法两者的主要特点,既可以利用HITS算法与查询相关的特点,也可以采纳PageRank的“随机游走模型”,这是SALSA算法提出的背景。由此可见,SALSA算法融合了PageRank和HITS算法的基本思想,从实际效果来说,很多实验数据表明,SALSA的搜索效果也都优于前两个算法,是目前效果最好的链接分析算法之一。 从整体原创 2012-09-25 17:04:43 · 12385 阅读 · 1 评论 -
数据结构(1)-线性表
1. 线性表:n个数据元素的有序集合。线性表是一种常用的数据结构。在实际应用中,线性表都是以栈、队列、字符串、数组等特殊线性表的形式来使用的。由于这些特殊线性表都具有各自的特性,因此,掌握这些特殊线性表的特性,对于数据运算的可靠性和提高操作效率都是至关重要的。 线性表是一个线性结构,它是一个含有n≥0个结点的有限序列,对于其中的结点,有且仅有一个开始结点没有前驱但有一个后继结点,有且仅有原创 2012-06-18 16:27:07 · 39927 阅读 · 11 评论 -
数据结构- 串的模式匹配算法:BF和 KMP算法
Brute-Force算法的思想1.BF(Brute-Force)算法 Brute-Force算法的基本思想是:1) 从目标串s 的第一个字符起和模式串t的第一个字符进行比较,若相等,则继续逐个比较后续字符,否则从串s 的第二个字符起再重新和串t进行比较。2) 依此类推,直至串t 中的每个字符依次和串s的一个连续的字符序列相等,则称模式匹配成功,此时串t的第一个字符在原创 2012-06-20 10:57:23 · 36516 阅读 · 3 评论 -
图的遍历 - 数据结构
概述图的遍历是指从图中的任一顶点出发,对图中的所有顶点访问一次且只访问一次。图的遍历操作和树的遍历操作功能相似。图的遍历是图的一种基本操作,图的其它算法如求解图的连通性问题,拓扑排序,求关键路径等都是建立在遍历算法的基础之上。由于图结构本身的复杂性,所以图的遍历操作也较复杂,主要表现在以下四个方面:① 在图结构中,没有一个“自然”的首结点,图中任意一个顶点都可作为第一个被访问的结点原创 2012-07-04 17:19:14 · 33437 阅读 · 1 评论 -
二叉树遍历 - 数据结构
1. 二叉树遍历1.1 遍历算法: 1.先序遍历的递归算法定义:(也叫做先根遍历、前序遍历). 若二叉树非空,则依次执行如下操作: (1) 访问根结点; (2) 遍历左子树; (3) 遍历右子树。 上图所示二叉树的遍历结果是:ABDECF2.中序遍历的递归算法定义:若二叉树非空,则依次执行如下操作: (1)遍历左子树;...原创 2012-06-21 11:13:10 · 4969 阅读 · 0 评论 -
图的应用详解-数据结构
概述最小生成树——无向连通图的所有生成树中有一棵边的权值总和最小的生成树拓扑排序 ——由偏序定义得到拓扑有序的操作便是拓扑排序。建立模型是AOV网关键路径——在AOE-网中有些活动可以并行地进行,所以完成工程的最短时间是从开始点到完成点的最长路径的长度,路径长度最长的路径叫做关键路径(Critical Path)。最短路径——最短路径问题是图研究中的一个经典算法问题, 旨在寻找图(原创 2012-07-15 12:02:26 · 27478 阅读 · 2 评论 -
B-树和B+树的应用:数据搜索和数据库索引
B-树1 .B-树定义:有序数组+平衡多叉树B-树是一种平衡的多路查找树,它在文件系统中很有用。定义:一棵m 阶的B-树,或者为空树,或为满足下列特性的m 叉树:⑴树中每个结点至多有m 棵子树;⑵若根结点不是叶子结点,则至少有两棵子树;⑶除根结点之外的所有非终端结点至少有[m/2] 棵子树;⑷所有的非终端结点中包含以下信息数据: (n,A0,K1,A...原创 2012-07-29 11:27:03 · 82267 阅读 · 19 评论 -
查找 -数据结构
几种查找算法:顺序查找,折半查找,分块查找,散列表一、顺序查找的基本思想: 从表的一端开始,向另一端逐个按给定值kx 与关键码进行比较,若找到,查找成功,并给出数据元素在表中的位置;若整个表检测完,仍未找到与kx 相同的关键码,则查找失败,给出失败信息。说白了就是,从头到尾,一个一个地比,找着相同的就成功,找不到就失败。很明显的缺点就是查找效率低。【适用性】:适用于线性表的原创 2012-07-24 16:17:19 · 12287 阅读 · 2 评论 -
海量数据处理算法—Bloom Filter
1. Bloom-Filter算法简介 Bloom-Filter,即布隆过滤器,1970年由Bloom中提出。它可以用于检索一个元素是否在一个集合中。 Bloom Filter(BF)是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。它是一个判断元素是否存在集合的快速的概率算法。Bloom Filter有原创 2012-08-14 18:40:48 · 84562 阅读 · 16 评论 -
链接分析算法之:HITS算法
HITS(HITS(Hyperlink - Induced Topic Search) ) 算法是由康奈尔大学( Cornell University ) 的Jon Kleinberg 博士于1997 年首先提出的,为IBM 公司阿尔马登研究中心( IBM Almaden Research Center) 的名为“CLEVER”的研究项目中的一部分。 HITS算法是链接分析中非常基础且重原创 2012-09-24 19:53:28 · 64040 阅读 · 5 评论 -
链接分析算法之:HillTop算法
Hilltop算法是由Krishna Baharat 在2000年左右研究的,于2001年申请专利,但是有很多人以为Hilltop算法是由谷歌研究的。只不过是Krishna Baharat 后来加入了Google成为了一名核心工程师,然后授权给Google使用的。 在与PageRank算法相比之下,Google意识到这个算法的进步会为他们的搜索排名带来非常重要的功能。Googl原创 2012-09-26 17:04:43 · 14149 阅读 · 1 评论 -
PageRank算法
1. PageRank算法概述 PageRank,即网页排名,又称网页级别、Google左侧排名或佩奇排名。 是Google创始人拉里·佩奇和谢尔盖·布林于1997年构建早期的搜索系统原型时提出的链接分析算法,自从Google在商业上获得空前的成功后,该算法也成为其他搜索引擎和学术界十分关注的计算模型。目前很多重要的链接分析算法都是在PageRank算法基础上原创 2012-09-21 17:02:52 · 244296 阅读 · 24 评论 -
八大排序算法
概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分...原创 2012-07-23 16:45:18 · 1040909 阅读 · 243 评论