散列表(哈希表)查找 – 数据结构和算法83

散列表(哈希表)查找让编程改变世界Change the world by program散列表(哈希表)查找我们要在a[]中查找key关键字的记录:顺序表查找:挨个儿比较有序表查找:二分法查找散列表查找:?…… 省略,具体请看视频讲解 ……散列表的查找步骤当存储记录时,通过散列函数计算出记录的散列地址当查找记录时,我们通过同样的是散列函数计算记录的散列

多路查找树之2-3-4树和B树 – 数据结构和算法82

多路查找树之2-3-4树和B树让编程改变世界Change the world by program由2-3树到2-3-4树…… 省略,具体请看视频讲解 ……B树一个m阶的B树具有如下属性:如果根结点不是叶结点,则其至少有两棵子树每一个非根的分支结点都有k-1个元素(关键字)和k个孩子,其中k满足:?m/2?所有叶子结点都位于同一层次每一个分支结点包含下列

多路查找树之2-3树 – 数据结构和算法79

多路查找树之2-3树让编程改变世界Change the world by program关于多路查找树的讲解,我们在这系列教程中主要以B树来讲。别误会哈,小甲鱼没有骂人,Ta真就叫B树,B……树。但是我们现在还不能直接讲这个,因为直接讲不容易接受,所以我们先谈下B树的两个特例:2-3树和2-3-4树。我们要谈B树的作用,还要从内存和磁盘的存取效益来说起。内存一般都

平衡二叉树的实现原理 – 数据结构和算法77

平衡二叉树的实现原理让编程改变世界Change the world by program上节课我们介绍了平衡二叉树,也叫AVL树,把二叉树在生成的时候构建为平衡二叉树可以避免出现极端的效率低下的查找过程!平衡二叉树构建的基本思想就是在构建二叉排序树的过程中,每当插入一个结点,就立刻先检查是否因插入这个结点而导致树的平衡性遭到破坏,如果是,立刻找出最小不平衡子树,然后通

平衡二叉树的实现原理(代码实现)- 数据结构和算法78

平衡二叉树的实现原理让编程改变世界Change the world by program上节课我们花了不少的时间和精力从意识形态上进一步的了解了AVL树(也就是平衡二叉树)的实现原理,但是小甲鱼知道,很多鱼油在想的方面基本是无敌了,但是到了要你用代码来实现的时候,脑袋里就只能蹦出两字:抽象!这节课小甲鱼就带大家一起来化腐朽为神奇,化干戈为玉帛,化不可能为可能,谈笑间

平衡二叉排序树 – 数据结构和算法76

平衡二叉排序树让编程改变世界Change the world by program平衡二叉排序树不知道各位小伙伴们回家有没有去自己打打代码,如果你认真研究了,你肯定会发现,这二叉排序树的效率还真得碰运气噢,大家一起来分析以下两种情况:如果序列是像[5, 9, 7, 6, 3, 4, 1, 8, 2]这样的组合,那么化成二叉树是酱紫:如果我们想查找结点9,只需要两次

二叉排序树的查找和插入操作 – 数据结构和算法74

二叉排序树的查找和插入操作让编程改变世界Change the world by program其实构造一棵二叉排序树的目的,并不单单是为了排序这么简单,而是为了提高查找和插入、删除关键字的速度。不管怎么说,在一个有序数据集上的查找,速度总是要快于无序的数据集的,而二叉树这种非线性的结构,也有利于插入和删除操作的实现。今天我们就重点来谈谈二叉排序树的查找、插入和删除的

二叉排序树(二叉查找树)- 数据结构和算法73

二叉排序树(二叉查找树)让编程改变世界Change the world by program先给大家讲个故事吧~话说有两个年轻人正在深山中行走。忽然发现远处有一只老虎正在虎视眈眈,随时都有可能冲过来,怎么办呢?其中一个小菇凉赶紧弯腰系鞋带,另一个奇怪地问:“你系鞋带干什么?你不可能跑得比老虎还快吧?”系鞋带的小菇凉说:“我有什么必要跑赢老虎呢?我只要跑得比你快就

斐波那契查找(黄金分割法查找)- 数据结构和算法71

斐波那契查找(黄金分割法查找)让编程改变世界Change the world by program黄金比例又称黄金分割,是指事物各部分间一定的数学比例关系,即将整体一分为二,较大部分与较小部分之比等于整体与较大部分之比,其比值约为1:0.618或1.618:1。0.618被公认为最具有审美意义的比例数字,这个数值的作用不仅仅体现在诸如绘画、雕塑、音乐、建筑等艺术领域

线性索引查找 – 数据结构和算法72

线性索引查找让编程改变世界Change the world by program稠密索引小甲鱼比较喜欢看书,经常看到一些精彩的段子总想把它记住然后结合在视频里给大家笑一笑,但小甲鱼记性不大好,所以经常话到了嘴边就忘词儿了。后来我就想到了一个好办法,从此腰也不酸了,腿也不疼了,一口气能追八个美眉了。分块索引倒排索引A:I love FishC.comB:I am

插值查找(按比例查找)- 数据结构和算法70

插值查找(按比例查找)让编程改变世界Change the world by program上节课小甲鱼给大家介绍了最朴素的查找方法:顺序查找法,原理非常简单,就是迭代目标的每一个元素去跟关键词进行匹配,匹配成功则查找成功。顺序查找算法的时间复杂度是O(n),不算太好,也不能再差了。那有没有更好的查找算法呢?那是必须的!我们接下来继续介绍效率更高的方法,也是属于静态

查找算法 – 数据结构和算法69

查找算法让编程改变世界Change the world by program说到查找,大家第一时间想到什么?有人说我硬盘有2TB那么大,海量资源实在多啊,某日顿然想起曾经下过的一部苍老师主演的动作片,想翻出来回顾回顾,就需要涉及到文件查找功能;有人说定位,例如外挂就是在游戏中查找定位像生命值、攻击力等属性数据并进行修改和提交;有人说搜索,像百度,谷歌。相信大家每

关键路径(代码讲解)- 数据结构和算法68

关键路径(代码讲解)让编程改变世界Change the world by program关键路径etv(Earliest Time Of Vertex):事件最早发生时间,就是顶点的最早发生时间;ltv(Latest Time Of Vertex):事件最晚发生时间,就是每个顶点对应的事件最晚需要开始的时间,如果超出此时间将会延误整个工期。ete(Earlies

关键路径 – 数据结构和算法67

关键路径让编程改变世界Change the world by program关键路径上节课小甲鱼讲的这个拓扑排序主要是为了解决一个工程能否顺序进行的问题,但有时我们还需要解决工程完成需要的最短时间问题。譬如说,造一辆汽车,我们需要先造各种各样的零件(一般的轿车由一万多个不可拆解的独立零件组成,F1赛车更是高达两万多个),最终再组装成整车。请问汽车厂造一辆汽车,最

最短路径(弗洛伊德算法)- 数据结构和算法65

最短路径(弗洛伊德算法)让编程改变世界Change the world by program最短路径(弗洛伊德算法)迪杰特斯拉算法对比弗洛伊德算法迪杰特斯拉算法对比弗洛伊德算法那我们为嘛还有讲它的必要呢?因为迪杰特斯拉算法求的是一个顶点到所有顶点的最短路径,但弗洛伊德算法是求所有顶点到所有顶点的最短路径。弗洛伊德算法非常简洁优雅。为了能讲明白弗洛伊德算法的精

拓扑排序 – 数据结构和算法66

拓扑排序让编程改变世界Change the world by program拓扑排序(Topological)一个无环的有向图称为无环图(Directed Acyclic Graph),简称DAG图。所有的工程或者某种流程都可以分为若干个小的工程或者阶段,称这些小的工程或阶段为“活动”。在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,这样的

最短路径(迪杰斯特拉算法)- 数据结构和算法64

最短路径(迪杰斯特拉算法)让编程改变世界Change the world by program最短路径(迪杰斯特拉算法)我们时常会面临着对路径选择的决策问题,例如在中国的一些一线城市如北京、上海、广州、深圳等,一般从A点到到达B点都要通过几次地铁、公交的换乘才可以到达。有些朋友想用最短对的时间,有些朋友想花最少的金钱,这就涉及到不同的方案,那么如何才能最快的计算出

最小生成树(克鲁斯卡尔算法)- 数据结构和算法63

最小生成树(克鲁斯卡尔算法)让编程改变世界Change the world by program克鲁斯卡尔算法无论是普里姆算法(Prim)还是克鲁斯卡尔算法(Kruskal),他们考虑问题的出发点都是:为使生成树上边的权值之和达到最小,则应使生成树中每一条边的权值尽可能的小。普里姆算法是以某顶点为起点,逐步找各个顶点上最小权值的边来构建最小生成树的。现在我们换一

最小生成树(普里姆算法)- 数据结构和算法62

最小生成树(普里姆算法)让编程改变世界Change the world by program最小生成树小苍童鞋的难题:普里姆算法方案一最小生成树成本:11+26+20+22+18+21+24+19=161方案二最小生成树成本:11+26+20+22+18+21+24+19=161方案三最小生成树成本:11+26+20+22+18+21+24+19=161