策略和技术

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

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

关键路径(代码讲解)- 数据结构和算法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赛车更是高达两万多个),最终再组装成整车。请问汽车厂造一辆汽车,最

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

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

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

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

斐波那契查找(黄金分割法查找)- 数据结构和算法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

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

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

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

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