数据结构与算法相关

1、快排空间

由于快排是递归的,需要借助一个递归工作栈来保存每一层递归调用的必要信息,其容量与最大深度一致。最好的情况为O(ceil( log2(n+1) )),最坏的情况为O(n),平均为O(log2(n))

2、两个单向链表,判断它们是否相关,若相关,找出其公共节点

1)没有环,是Y型,可通过O(m+n),来求出其公共交点。
2)双环,只要两链表存在交点,则其链尾一定是相同的,而环只出现在链尾,所以可以断定:有交点且有环,则一定是双环。可以用求环路口的算法求出任意一链表环的入口,即为交点。

3、二叉树与度为2的树间的区别

1)度为2的树至少有3个节点,二叉树可谓空;
2)度为2的树只有一个孩子时,不分左右,而二叉树是必须分左右孩子的。

注意:
1)树的节点数等于所有节点的度数总和加1;
2)深度为k的完全二叉树至少有2(k-1)个节点,至多有(2k)-1个节点。

4、B-树

B-树是一种多路搜索树(并不是二叉的):

   1.定义任意非叶子结点最多只有M个儿子,且M>2;

   2.根结点的儿子数为[2, M],或者根节点为一片树叶;

   3.除根结点以外的非叶子结点的儿子数为[ceil(M/2), M];

   4.每个结点存放至少ceil(M/2)-1和至多M-1个关键字;(至少2个关键字)

   5.非叶子结点的关键字个数=指向儿子的指针个数-1;

   6.非叶子结点的关键字:K[1], K[2], …, K[M-1];且K[i] < K[i+1];

   7.非叶子结点的指针:P[1], P[2], …, P[M]指定子节点范围。

   8.所有叶子结点位于同一层;
M=3
5、并查集

并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示,进行快速归整。并查集保持一组不想交的动态集合,每个集合通过一个代表来识别,代表即集合中的某个成员。在某些应用中,代表迭代取任意,或最小值。

Make_Set(x):
建立一个新的集合,其唯一成员就是x,因此这个集合的代表也是x,并查集要求各集合是不相交的,因此要求x没有在其他集合中出现过。

Find_Set(x):
返回能代表x所在集合的节点,通常返回x所在集合的根节点。有递归和非递归两种方法。

Union(x, y):
将包含x,y的动态集合合并为一个新的集合。合并两个集合的关键是找到两个集合的根节点,如果两个根节点相同则不用合并;如果不同,则需要合并。

6、表查询

对于查找表的一般操作包括四种:查询特定元素,检索满足条件的元素,插入元素,删除元素。只涉及前两项操作的表称为静态查找表,需要动态修改的表称为动态查找表。

适合静态查找表的查找方法有:顺序查找,折半查找,散列查找;
适合动态查找表的查找方法有:二叉排序树的查找,散列查找。

7、哈希表

哈希表又称为散列表,它基于快速存取的角度设计,典型的“空间换时间”做法。可直接寻址,可在O(1)的时间内访问数组的任意元素。

哈希函数应尽量减少冲突关键字的出现(同义词),处理好冲突。

哈希函数是一种压缩映射,使得散列值的空间,通常远小于输入空间,不同的输入可能散列成相同的输出,而不可能从散列值唯一确定输入值,是一种消息摘要算法,不是加密算法,不具有可逆性,是加密算法的重要构成部分。MD4,MD5,SHA-1。

8、处理哈希冲突的方法:

1)链地址法
2)开放地址法(线性,二次,伪随机探测法)
3)再散列法
4)建立公共溢出区

其中开放定址法需要定期维护,只能进行逻辑删除。计算查找成功平均查找长度ASL,是对非空元素而言的,计算失败查找的平均长度ASL则针对表长。

9、一致性哈希

一致性哈希算法是一种哈希算法,在添加或移出一个节点时,它尽可能小地改变已存在key的映射关系。基本思路是使用相同的哈希算法,将数据和节点都映射到环形哈希空间。

10、BloomFilter

可视为Bitmap的扩展,与hash函数结合使用:
插入时,将元素按照K个hash函数计算出的位全部置1;
查询时,如果k个hash函数的结果都是1则认为存在该元素。

BloomFilter存在一定的误判风险,但是通过极少错误换取了存储空间的极大节省。

11、海量排序

我们一般提到的排序都是指内部排序,比如快排,归并排序。所谓内部排序就是可以在内存中完成的排序,但对大数据集来说,内存时远不够的,这时就涉及到外部排序了。

外部排序指的是大文件的排序,即待排序的记录存储在外部存储器上,待排序的文件无法一次性装入内存,需要在内存和外存之间进行多次数据交换,以达到整体排序的目的。

最常用的是多路归并算法,为降低每个记录的比较次数,引入“败者树”,可以视为一颗完全二叉树。每个结点存放各段在归并过程中的记录,内部结点用来记忆左右子树的“失败者”,而让胜利者继续比较,一直到根结点,如果比较的两个数大为失败,小为胜利,则根指向最小树。

12、算法的五个特性

1)有穷性: 一个算法必须保证执行有限步之后结束;
2)确切性: 算法的每一步骤必须有确切的定义;
3)输入:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定除了初始条件;
4)输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;
5)可行性: 算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • 1 序 2016年6月25日夜,帝都,天下着大雨,拖着行李箱和同学在校门口照了最后一张合照,搬离寝室打车去了提前租...
    RichardJieChen阅读 5,071评论 0 12
  • 第一章 绪论 什么是数据结构? 数据结构的定义:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 第二章...
    SeanCheney阅读 5,734评论 0 19
  • 前言 其实读完斯坦福的这本《互联网大规模数据挖掘》,让我感觉到,什么是人工智能?人工智能就是更高层次的数据挖掘。机...
    我偏笑_NSNirvana阅读 12,493评论 1 23
  • 序言 如果(按道金斯的论证)欺骗行为是动物间交往的基本活动的话,就一定存在有对欺骗行为的强烈的选择性,而动物也转而...
    吴玉纯阅读 603评论 0 2
  • 【今日盘面】 今日股指均小幅低开,低开后深成指,中小板表现较强,而沪指和创业板今日表现稍弱,维持高位震荡,沪指尾盘...
    股海苍穹阅读 226评论 0 0