随笔分类 -  数据结构

摘要:二叉堆(以大根堆为例): 堆的数据结构: 堆一般使用数组存储。当堆中有n个元素的时,可以将这些元素存放在数组heap的前n个单元里,其中堆的根节点中元素存放在heap[1]中。结点之间的关系有两种情况: 如果根节点在数组中的位置是1,那么第i个位置的左右节点下标分别为2i、2i+1,父节点下标为 i 阅读全文
posted @ 2023-02-05 00:34 PassCo2 阅读(110) 评论(0) 推荐(0)
摘要:并查集 并查集基础 定义 并查集是一种树型的数据结构,主要用于处理一些不相交集合的合并及查询问题(即所谓的并、查)。一些常见的用途有连通子图、最小生成树的Kruskal算法和求最近公共祖先等。 并查集的实现与优化 并查集的原理: 每个集合用一棵树来表示。树根的编号就是整个集合的编号。每个节点存储它的 阅读全文
posted @ 2023-02-05 00:32 PassCo2 阅读(49) 评论(0) 推荐(0)
摘要:字典树(Trie树),又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。Trie的核心思想是空间换时间。利用字符串的公共前缀来降低 阅读全文
posted @ 2023-02-05 00:17 PassCo2 阅读(254) 评论(0) 推荐(0)
摘要:哈希表(hash table)又叫散列表,是一种关联式容器,存储的是一对值,一般是一个key对应一个value(又叫键值对)。数组、链表、栈、队列都是序列式容器,存储的都是一个元素。 C++ STL中的map就是一个散列表。 散列函数: 散列函数的要求: hash(key)的结果是非负整数(数组下标 阅读全文
posted @ 2023-02-05 00:13 PassCo2 阅读(210) 评论(0) 推荐(0)