算法相关
编程小问号
这个作者很懒,什么都没留下…
展开
-
速查表:常用算法和数据结构的复杂度
常用算法和数据结构的复杂度速查表,搜索算法数据结构时间复杂度空间复杂度 平均最差最差深度优先搜索 (DFS)Graph of |V| vertices and |E| edges-O(|E| + |V|)O(|V|)广度优先搜索 (BFS)Graph of |V| vertices转载 2016-05-08 00:58:18 · 597 阅读 · 0 评论 -
基于双数组Trie的词典查询算法
转载 2017-09-25 17:51:47 · 539 阅读 · 0 评论 -
数据结构与算法经典80
由于这些题,实在太火了。所以,应广大网友建议要求,在此把之前已整理公布的前80题, 现在,一次性分享出来。此也算是前80题第一次集体亮相。 此些题,已有上万人,看到或见识到,若私自据为己有,必定为有知之人识破,付出代价。 所以,作者声明: 本人July对以上所有任何内容和资料享有版权,转载请注明作者本人July出处。 向你的厚道致敬。谢谢。把二元查找树转变成排序的双向链表转载 2017-02-16 13:26:11 · 627 阅读 · 0 评论 -
Bloom Filter概念和原理
Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的元素误认为属于这个集合(false positive)。因此,Bloom Filter不适合那些“零错误”的应用场合。而在能容忍低错误率的应用场合下,Bloom转载 2016-12-07 16:46:53 · 371 阅读 · 0 评论 -
算法复杂度这件事
算法复杂度这件事这篇文章覆盖了计算机科学里面常见算法的时间和空间的大 OBig-O 复杂度。我之前在参加面试前,经常需要花费很多时间从互联网上查找各种搜索和排序算法的优劣,以便我在面试时不会被问住。最近这几年,我面试了几家硅谷的初创企业和一些更大一些的公司,如 Yahoo、eBay、LinkedIn 和 Google,每次我都需要准备这个,我就在问自己,“为什么没有人创建一个漂亮的大 O转载 2016-10-14 17:55:53 · 427 阅读 · 0 评论 -
笛卡尔积的递归和非递归的实现
#coding=utf-8""" descartes alg 2016-09-01 20:07"""""" loop"""def getDis(list_item, list_item1): temp_list = list() for iitem in list_item: for iitem2 in list_item1:原创 2016-09-02 18:03:10 · 1743 阅读 · 0 评论 -
经典排序算法总结与实现
经典排序算法在面试中占有很大的比重,也是基础,为了未雨绸缪,在寒假里整理并用Python实现了七大经典排序算法,包括冒泡排序,插入排序,选择排序,希尔排序,归并排序,快速排序,堆排序。希望能帮助到有需要的同学。之所以用Python实现,主要是因为它更接近伪代码,能用更少的代码实现算法,更利于理解。本篇博客所有排序实现均默认从小到大。一、冒泡排序 BubbleSort介绍转载 2016-08-07 22:29:03 · 572 阅读 · 7 评论 -
Erasure Code
xp的分布式系统系列教程之: Erasure Code: 介绍, 数学原理, 实践.问题: 分布式系统中通过数据冗余保证可靠性.多副本副本数一般是3d1, d1, d1 d2, d2, d2 ...冗余度是 300% // 空间浪费200%能否用较少的冗余, 来实现较高的可靠性?可否多存储一个数字, 使得整个系统在丢失任何一个数字的时转载 2016-07-30 23:32:34 · 626 阅读 · 0 评论 -
七牛的存储算法猜测
个人浏览网页的时候,有打标签的习惯。最近整理以往的标签的时候,发现积累了一些有关七牛公司存储策略的网页,遂决定整理一篇文章处理,以备记忆。当然,也希望对他人有用。因为七牛公司的存储策略主要基于纠删码(Erasure Codes,EC),所以下面先从纠删码引申开来。引言:何为纠删码数据的爆炸式增长使得存储系统的规模不断增加,存储设备的可靠性却一直没有得到显著提高(SSD 从S转载 2016-07-30 23:26:56 · 558 阅读 · 0 评论 -
超好用的uthash万岁~~~
#include "uthash.h" #include #include #include /*这个uthash必须构造一个结构体*/ struct packet { int key; /*这个是用来做hash的key值*/ char msg[10]; UT_转载 2016-06-19 00:14:21 · 556 阅读 · 0 评论 -
跳跃表 Skip List
最近在学习redis,这时才知道了skip list,结合Mit 算法导论 lecture 12,在奋斗了2个早上的时间后有了下面的东东。对于我们熟悉的binary search来说,我们需要能够做到random access才行。但是在普通的link这种数据结构中却不能做到。而这种情况下我们有很多类似的工具比如heap,tree,b tree,red-black tree。等等类转载 2016-07-26 17:41:00 · 474 阅读 · 0 评论 -
浅析SkipList跳跃表原理及代码实现
转载请注明:http://blog.csdn.net/ict2014/article/details/17394259SkipList在leveldb以及lucence中都广为使用,是比较高效的数据结构。由于它的代码以及原理实现的简单性,更为人们所接受。我们首先看看SkipList的定义,为什么叫跳跃表?“ Skip lists are data structures转载 2016-07-26 17:10:32 · 557 阅读 · 0 评论 -
字符串匹配的KMP算法
作者: 阮一峰日期: 2013年5月 1日字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Don转载 2016-07-26 13:51:18 · 403 阅读 · 0 评论 -
字符串匹配的Boyer-Moore算法
作者: 阮一峰日期: 2013年5月 3日上一篇文章,我介绍了KMP算法。但是,它并不是效率最高的算法,实际采用并不多。各种文本编辑器的"查找"功能(Ctrl+F),大多采用Boyer-Moore算法。Boyer-Moore算法不仅效率高,而且构思巧妙,容易理解。1977年,德克萨斯大学的Robert S. Boyer教授和J Strother Mo转载 2016-07-26 13:33:12 · 378 阅读 · 0 评论 -
最短摘要的生成
你我在百度或谷歌搜索框中敲入本博客名称的前4个字“结构之法”,便能在第一个选项看到本博客的链接,如下图2所示:图2 谷歌中搜索关键字“结构之法”在上面所示的图2中,搜索结果“结构之法算法之道-博客频道-CSDN.NET”下有一段说明性的文字:“程序员面试、算法研究、编程艺术、红黑树4大经典原创系列集锦与总结 作者:July--结构之法算法...”,我们把这段文字称为那个搜索转载 2016-07-26 11:25:42 · 700 阅读 · 0 评论 -
MySQL索引背后的数据结构及算法原理
摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。文章主要内容分为三个部分转载 2016-07-24 00:43:11 · 670 阅读 · 0 评论 -
通过金矿模型介绍动态规划
对于动态规划,每个刚接触的人都需要一段时间来理解,特别是第一次接触的时候总是想不通为什么这种方法可行,这篇文章就是为了帮助大家理解动态规划,并通过讲解基本的01背包问题来引导读者如何去思考动态规划。本文力求通俗易懂,无异性,不让读者感到迷惑,引导读者去思考,所以如果你在阅读中发现有不通顺的地方,让你产生错误理解的地方,让你难得读懂的地方,请跟贴指出,谢谢! ----第一节转载 2016-07-23 17:02:51 · 369 阅读 · 0 评论 -
数据结构和算法系列17 图
数据结构和算法系列17 图阅读目录一,图的定义二,图相关的概念和术语三,图的创建和遍历四,最小生成树和最短路径五,算法实现这一篇我们要总结的是图(Graph),图可能比我们之前学习的线性结构和树形结构都要复杂,不过没有关系,我们一点一点地来总结,那么关于图我想从以下几点进行总结:1,图的定义?2,图相关的概念和术语?3,图的创建和遍历?4,最转载 2016-07-22 18:07:18 · 508 阅读 · 0 评论 -
深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
在求取有约束条件的优化问题时,拉格朗日乘子法(Lagrange Multiplier) 和KKT条件是非常重要的两个求取方法,对于等式约束的优化问题,可以应用拉格朗日乘子法去求取最优值;如果含有不等式约束,可以应用KKT条件去求取。当然,这两个方法求得的结果只是必要条件,只有当是凸函数的情况下,才能保证是充分必要条件。KKT条件是拉格朗日乘子法的泛化。之前学习的时候,只知道直接应用两个方法,...转载 2018-09-20 10:45:41 · 593 阅读 · 0 评论