数据结构
文章平均质量分 85
A cold winter
夜阑卧听风吹雨,铁马冰河入梦来。
展开
-
数据结构学习之哈希表篇(一)
什么是哈希表?哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做哈希函数,存放记录的数组叫做哈希表。哈希冲突:不同的“键”通过哈希函数的计算可能对应相同的“索引”,就叫做哈希冲突,在哈希表中,解决哈希冲突是一个很重要的问题。哈希表充分体现了算法设计领域的经典思想:用空间换时间...原创 2020-06-05 16:44:58 · 235 阅读 · 0 评论 -
数据结构学习之红黑树篇(Java)
红黑树也首先是一颗二分搜索树,然后还要满足一下定义(算法导论中的定义):每个节点或者是红色的,或者是黑色的根节点是黑色的每一个叶子节点(最后的空节点)是黑色的如果一个节点是红色的,那么他的孩子节点都是黑色的从任意一个节点到叶子节点,经过的黑色节点是一样的...原创 2020-06-04 16:27:10 · 167 阅读 · 0 评论 -
数据结构学习之平衡树与AVL篇(Java)
平衡树:对于任意一个节点,左子树和右子树的高度差不能超过1平衡因子:任意一个节点左子树与右子树的高度差.原创 2020-06-02 15:35:23 · 147 阅读 · 0 评论 -
数据结构学习之并查集篇(Java)
并查集(Union Find):并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。这一类问题近几年来反复出现在信息学的国际国内赛题中,其特点是看似并不复杂,但数据量极大,若用正常的数据结构来描述的话,往往在空间上过大,计算机无法承受;即使在空间上勉强通过,运行的时间复杂度也极高,根本就不可能在比赛规定的运行时间(1~3秒)内计算出试题需要的结果,只能用并查集来描述。并查集是一种树原创 2020-05-29 17:35:52 · 138 阅读 · 0 评论 -
数据结构学习之字典树篇(Java)
字典树(Trie) : 又称前缀树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。如果有n个条目,Trie查询每个条目的时间复杂度和字典中一共有多少条目无关,时间复杂度为O(w),w为查询单词的长度!而大多数单词的长度小于10。...原创 2020-05-29 13:47:34 · 259 阅读 · 0 评论 -
数据结构学习之堆与优先队列篇(Java)
在实现优先队列之前,我们先学习一下堆这种数据结构,因为用堆实现的优先队列是一种常见的选择,实现的优先队列的算法的时间复杂度是O(logn)级别的。堆:堆有很多种,其中最主流的方式就是用二叉树来表示一个堆,通常称之为二叉堆(Binary Heap)...原创 2020-05-18 17:34:47 · 178 阅读 · 0 评论 -
数据结构学习之映射篇(Java)
映射(Map):Map 是一种键-值对(key-value)集合,Map 集合中的每一个元素都包含一个键对象和一个值对象。其中,键对象不允许重复,而值对象可以重复,并且值对象还可以是 Map 类型的,就像数组中的元素还可以是数组一样。Map接口:增删改查public interface Map<K,V> { //添加元素 void add(K key,V value); //删除元素 V remove(K key); //是否包含某元素原创 2020-05-15 11:28:28 · 250 阅读 · 0 评论 -
数据结构学习之集合篇(Java)
集合(Set):对应数学中集合的概念。集合中元素的三个特性:确定性,互异性,无序性。但是在计算机数据结构中, 也有有序集合(一般基于搜索树实现),无序集合(一般基于哈希表实现),多重集合(允许元素重复)的分类。我们在使用中一般都是利用其不允许存储重复元素的功能。集合接口Set:增删查功能public interface Set<E> { //添加元素 void add(E e); //删除元素 void remove(E e); //查询原创 2020-05-15 11:12:26 · 174 阅读 · 0 评论 -
数据结构学习之二叉树篇(Java)
树在计算机中是一种非常重要的数据结构,树结构本身也是一种天然的组织结构。二叉树顾名思义也就是每个节点最多只能有两个子节点的树结构。二叉树具有唯一根节点class Node(){ E e; //左孩子 Node left; //右孩子 Node right;}二叉树每个节点最多有两个孩子二叉树每个节点最多有一个父亲二叉树具有天然递归结构...原创 2020-05-11 15:26:45 · 145 阅读 · 0 评论 -
数据结构学习之链表篇(Java)
链表–真正的动态数据结构前面实现的线性数据机构动态数组,栈,队列底层依托静态数组,靠resize函数解决固定容量问题,不算是真正的动态数据结构。...原创 2020-04-15 16:47:59 · 162 阅读 · 0 评论 -
数据结构学习之栈和队列篇(Java)
栈(Stack)栈也是一种线性结构相比数组,栈对应的操作是数组的子集只能从一端添加元素,也只能从一端取出元素,这一端称为栈顶栈是一种后进先出的数据结构–Last in First out(LIFO)...原创 2020-04-10 16:19:02 · 159 阅读 · 0 评论 -
数据结构学习之数组篇(Java)
数组最大的优点:快速查询数组最好应用于“索引有语义”的情况,但并非所有有语义的索引都适用于数组,当然数组也可以处理“索引没有语义”的情况。...原创 2020-04-07 16:58:27 · 177 阅读 · 0 评论