上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 23 下一页
摘要: 1、 概述 并查集(Disjoint set或者Union-find set)是一种树型的数据结构,常用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。 2、 基本操作 并查集是一种非常简单的数据结构,它主要涉及两个基本操作,分别为: A. 合并两个不相交集合 B. 判断两个元素 阅读全文
posted @ 2017-06-13 14:23 不会就问咯 阅读(560) 评论(0) 推荐(0) 编辑
摘要: 1、概述 树状数组(binary indexed tree),是一种设计新颖的数组结构,它能够高效地获取数组中连续n个数的和。概括说,树状数组通常用于解决以下问题:数组{a}中的元素可能不断地被修改,怎样才能快速地获取连续几个数的和? 2、树状数组基本操作 传统数组(共n个元素)的元素修改和连续元素 阅读全文
posted @ 2017-06-13 14:22 不会就问咯 阅读(293) 评论(0) 推荐(0) 编辑
摘要: 1、 概述 二叉查找树(Binary Search Tree,也叫二叉排序树,即Binary Sort Tree)能够支持多种动态集合操作,它可以用来表示有序集合、建立索引等,因而在实际应用中,二叉排序树是一种非常重要的数据结构。 从算法复杂度角度考虑,我们知道,作用于二叉查找树上的基本操作(如查找 阅读全文
posted @ 2017-06-13 14:20 不会就问咯 阅读(309) 评论(0) 推荐(0) 编辑
摘要: 1. 概述 后缀数组是一种解决字符串问题的有力工具。相比于后缀树,它更易于实现且占用内存更少。在实际应用中,后缀数组经常用于解决字符串有关的复杂问题。 本文大部分内容摘自参考资料[1][2]。 2. 后缀数组 2.1 几个概念 (1)后缀数组SA 是一个一维数组,它保存1..n 的某个排列SA[1] 阅读全文
posted @ 2017-06-13 14:19 不会就问咯 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 1. 概述 同splay tree一样,treap也是一个平衡二叉树,不过Treap会记录一个额外的数据,即优先级。Treap在以关键码构成二叉搜索树的同时,还按优先级来满足堆的性质。因而,Treap=tree+heap。这里需要注意的是,Treap并不是二叉堆,二叉堆必须是完全二叉树,而Treap 阅读全文
posted @ 2017-06-13 14:18 不会就问咯 阅读(440) 评论(0) 推荐(0) 编辑
摘要: 1. 概述 AVL树是最早提出的自平衡二叉树,在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。AVL树得名于它的发明者G.M. Adelson-Velsky和E.M. Landis。AVL树种查找、插入和删除在平均和最坏情况下都是O(log n),增加和删除可能需要通过一 阅读全文
posted @ 2017-06-13 14:17 不会就问咯 阅读(379) 评论(0) 推荐(0) 编辑
摘要: 1. 概述 位图(bitmap)是一种非常常用的结构,在索引,数据压缩等方面有广泛应用。本文介绍了位图的实现方法及其应用场景。 2. 位图实现 (1)自己实现 在位图中,每个元素为“0”或“1”,表示其对应的元素不存在或者存在。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 阅读全文
posted @ 2017-06-13 14:16 不会就问咯 阅读(613) 评论(0) 推荐(0) 编辑
摘要: 1. 简介 红黑树是一种自平衡二叉查找树。它的统计性能要好于平衡二叉树(AVL树),因此,红黑树在很多地方都有应用。在C++ STL中,很多部分(目前包括set, multiset, map, multimap)应用了红黑树的变体(SGI STL中的红黑树有一些变化,这些修改提供了更好的性能,以及对 阅读全文
posted @ 2017-06-13 14:15 不会就问咯 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 1、概述 线段树,也叫区间树,是一个完全二叉树,它在各个节点保存一条线段(即“子数组”),因而常用于解决数列维护问题,它基本能保证每个操作的复杂度为O(lgN)。 2、线段树基本操作 线段树的基本操作主要包括构造线段树,区间查询和区间修改。 (1) 线段树构造 首先介绍构造线段树的方法:让根节点表示 阅读全文
posted @ 2017-06-13 14:14 不会就问咯 阅读(331) 评论(0) 推荐(0) 编辑
摘要: 1. 概述 堆(也叫优先队列),是一棵完全二叉树,它的特点是父节点的值大于(小于)两个子节点的值(分别称为大顶堆和小顶堆)。它常用于管理算法执行过程中的信息,应用场景包括堆排序,优先队列等。 2. 堆的基本操作 堆是一棵完全二叉树,高度为O(lg n),其基本操作至多与树的高度成正比。在介绍堆的基本 阅读全文
posted @ 2017-06-13 14:11 不会就问咯 阅读(512) 评论(0) 推荐(0) 编辑
上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 23 下一页