一句话+一张图理解——数据结构与算法

一句话+一张图理解——数据结构与算法的相关文章

09-看图理解数据结构与算法系列(B树)

B树 B树即平衡查找树,一般理解为平衡多路查找树,也称为B-树.B_树.是一种自平衡树状数据结构,能对存储的数据进行O(log n)的时间复杂度进行查找.插入和删除.B树一般较多用在存储系统上,比如数据库或文件系统. B树特点 B树可以定义一个m值作为预定范围,即m路(阶)B树. 每个节点最多有m个孩子. 每个节点至少有ceil(m/2)个孩子,除了根节点和叶子节点外. 对于根节点,子树个数范围为[2,m],节点内值的个数范围为[1,m-1]. 对于非根节点,节点内的值个数范围为[ceil(m/

12-看图理解数据结构与算法系列(冒泡排序)

冒泡排序 冒泡排序是一种很简单的排序算法,主要思想就是不断走访待排序序列,每次只比较两个相邻元素,如果这俩元素顺序不符合要求则对换它们,不断重复知道没有相邻元素需要对换.在不断走访比较过程中,越大的元素经过交换会慢慢走到数列顶端,所以看起来它就像气泡一样不断往上冒,于是就叫冒泡. 排序要点 比较相邻两个元素,如果前一元素比后一元素大则对换它们的位置. 从头开始对每一对相邻元素都执行1的对比工作,直至结尾最后一对,执行完一轮后,该轮最大的元素被换置到最后. 针对所有元素执行若干轮1和2操作,每次经

14-看图理解数据结构与算法系列(希尔排序)

希尔排序 希尔排序是希尔(Donald Shell)提出的一种排序方法,也属于插入排序,但是简单插入排序的高效版本,也称为缩小增量排序.基本思想是将待排序元素进行增量分组,然后在分组组内进行插入排序,随着增量的减少,每个分组组内的元素越来越多,直至增量减至1时,所有元素都分到同一个组内,执行插入排序后完成整个排序操作. 排序要点 选取一个小于所有待排序元素数量n的整数作为第一个增量,对全部元素进行分组,分组的依据是所有距离为的倍数的记录分到同一组. 对分好的组,在组内进行直接插入排序. 接着取第

13-看图理解数据结构与算法系列(Trie树)

Trie树 Trie树,是一种搜索树,也称字典树或单词查找树,此外也称前缀树,因为某节点的后代存在共同的前缀.它的key都为字符串,能做到高效查询和插入,时间复杂度为O(k),k为字符串长度,缺点是如果大量字符串没有共同前缀时很耗内存.它的核心思想就是减少没必要的字符比较,使查询高效率,即用空间换时间,再利用共同前缀来提高查询效率. Trie树特点 根节点不包含字符,其他节点每个节点只包含一个字符. 从根节点到某一节点经过路径的字符连起来即为该节点对应的字符串. 每个节点的所有子节点字符都不相同

10-看图理解数据结构与算法系列(B+树)

B+树 B+树是B树的一种变体,也属于平衡多路查找树,大体结构与B树相同,包含根节点.内部节点和叶子节点.多用于数据库和操作系统的文件系统中,由于B+树内部节点不保存数据,所以能在内存中存放更多索引,增加缓存命中率.另外因为叶子节点相连遍历操作很方便,而且数据也具有顺序性,便于区间查找. B+树特点 B+树可以定义一个m值作为预定范围,即m路(阶)B+树. 根节点可能是叶子节点,也可能是包含两个或两个以上子节点的节点. 内部节点如果拥有k个关键字则有k+1个子节点. 非叶子节点不保存数据,只保存

08-看图理解数据结构与算法系列(2-3树)

2-3树 2-3树,是最简单的B-树,其中2.3主要体现在每个非叶子节点都有2个或3个子节点,B-树即是平衡树,平衡树是为了解决不平衡树查询效率问题,常见的二叉平衡书有AVL树,它虽然提高了查询效率,但是插入操作效率不高,因为它需要再每次插入节点后维护树的平衡,而为了解决查询效率同时有兼顾插入效率,于是提出了2-3树. 2-3树特点 2-3树是一棵平衡树,但不是二叉平衡树. 对于高度相同的2-3树和二叉树,2-3树的节点数要大于满二叉树,因为有些节点可能有三个子节点. 2-3树可以是一棵空树.

8张图理解Java

1.字符串不变性 下面这张图展示了这段代码做了什么 1 2 String s = "abcd"; s = s.concat("ef"); 2.equals()方法.hashCode()方法的区别 HashCode被设计用来提高性能.equals()方法与hashCode()方法的区别在于: 如果两个对象相等(equal),那么他们一定有相同的哈希值. 如果两个对象的哈希值相同,但他们未必相等(equal). 3.Java异常类的层次结构 图中红色部分为受检查异常.它

一张图理解OpenStack Heat的内部调用逻辑

OpenStack Heat是个很有前景的项目,主要负责在数据中心中利用模板来完成资源的自动化管理. 即,用户定义可读性好(json or yaml)的资源模板,heat负责将这些资源在openstack中进行部署. 其内部主要分heatclient.heatapi.heatengine三层,调用逻辑如下图所示. heat-client,接受输入命令.参数和模板(URL.文件路径或数据),处理信息后转为REST API请求发送到heat-api服务. heat-api服务接受请求,读入模板信息,

"&" ,“|“,“^”计算方式一张图理解

一张图理解& | ^三个计算方式: 原文地址:http://blog.51cto.com/5013162/2296517