摘要:
很多问题上,都可以借助图的理论来求解。图的概念,性质,实现,遍历等等都是极为重要的。这篇博客便是简单的介绍一下图如何用代码实现。 1. 基本定义 一个图 是由一个非空的有限顶点集V和一个边集E所组成的二元组。 若E中的每条边都是 阅读全文
摘要:
1. 定义 B树是一种平衡搜索树,但是在降低磁盘I/O操作数方面要做的更好一些,许多数据库也是使用B树或者B树的变体来存储信息。 一棵B树T是具有以下性质的有根树(根为T.root) 每个结点x有以下属性: x.n,当前存储在结点x中的关键字个数 x.n个关键字本身x.key1,x.key2,... 阅读全文
摘要:
借鉴 "这篇博客" ,总结了Trie树的相关知识。 1. 概念 字典树(Trie)可以保存一些字符串 值的对应关系。基本上,它跟Java的HashMap功能相同,都是key value映射,只不过Trie的key只能是字符串。Trie来自单词"retr 阅读全文
摘要:
1. 概念 红黑树是一棵二叉查找树,它在每个结点上增加了一个存储为来表示结点的颜色,可以RED或BLACK。通过对任意一条从根到叶子的简单路径上各个结点的颜色进行约束,红黑树确保没有一条路径会比其他路径长出2倍,因而是近似于平衡。 树中每个结点都包含5 阅读全文
摘要:
1. 概念 之前的 "博客" 介绍过查找二叉树,在原始数据为有序序列的时候,建立的查找二叉树跟链表别无两样。由于这种情况下的查找二叉树完全倾斜,其平均查找时间和最坏查找时间都是O(n),显然效率很低。 究其原因,查找二叉树没有有效的机制来维持其的 。我 阅读全文
摘要:
参考 "这篇博客" ,再加上自己的一些理解,总结了一下。 1. 概念 哈希表也叫散列表,是一种查找算法,它尽量能不经过任何比较,通过一次存取就能得到所查找的数据元素。 因此需要存在一种映射关系,使每个关键字和哈希表中唯一一个存储位置相对应,这个映射关系叫做散列函数。 ![im 阅读全文
摘要:
参考了这篇 "博客" ,再加上自己的理解,总结了跳表的一些知识。 1. 概念 基于并联的链表,跳表是一种随机化的数据结构,在插入、删除、查找的复杂性都是O(logN)。它是链表的一种,只不过加入了跳跃功能,正是因为这个特性,使得它的查找复杂度是O(logN)。 & 阅读全文
摘要:
这篇博客里我先是介绍了 什么是哈夫曼树 ,然后给出了 如何去构造 其的算法,接着引进 哈夫曼编码 ,最后拓展到了 动态哈夫曼树 。废话不多说,开始吧! 1. 什么是哈夫曼 要介绍哈夫曼树,得先了解几个概念: 扩充二叉树:在原来的二叉树(内结点)中出现空子树时,加上特殊的结点( 阅读全文
摘要:
选择树 概念:假设有k个已经排序的序列,并且想要将其合并成一个单独的排序序列。每个排好序的序列叫走一个 。 暴力算法:假设总共有n个数字,每次取k个归并串最小或者最大的一个数,比较k 1次得到所有数中最大或者最小的树,存入新空间中,接着一直这样比较...需要比较的次数是n (k 1) 选择树算法:可 阅读全文