`

十大常用数据结构

阅读更多
一、栈:

1、后缀表达式的求值;
2、中缀到后缀表达式的转换;
3、深度优先搜索的非递归实现;
4、动态规划的优化:用于维护一个凸序列,便于二分查找,如LIS问题的O(nlgn)算法。

二、队列:
1、树的层序遍历;
2、广度优先搜索;
3、Bellman-Ford算法的SPFA实现;
4、网络流中FF算法的Edmonds-Karp实现,以及Preflow算法的队列优化实现。


三、二叉搜索树:

1、对大量的关键字的索引查找;
2、有很多平衡策略以改善其平均性能:
常用平衡树:AVL,红黑树,随机化BST,Splay Tree,Treap(或叫笛卡儿树)。

四、散列表(hash表):
1、一般针对值域较大但状态很稀疏的应用,比如状态压缩记忆化搜索;
2、实现映射功能。

五、检索树(Trie):
1、一般用于字符串索引算法,速度快,但占用空间较大(相对hash);
2、常用的改进结构:Patricia线索树,多叉检索树(TST)。

六、优先队列:

1、常用的是二叉堆的实现,具体应用如堆排序和Dijkstra算法;
2、当需要快速合并两个优先队列时,常用二项式队列,实现简单。
3、注意最大最小堆的配对使用。

七、线段树和树状数组:

1、两者都可以用于离散对象的统计;
2、后者的步进函数的性质和应用值得注意;
3、前者基本上适用于任何的区间操作,如求区间最值,改变区间的值等。
4、线段树还可以用于优化状态的枚举,经常和动态规划结合。

八、后缀树与后缀数组:

1、总体规律是两者的实现都比较复杂,前者更甚,但是前者的功能也更强大;
2、几乎可以解决所有常见的关于字符串的算法,如最长回文子串,最长重复子串,以及很多的模式匹配问题。

九、并查集:

1、解决无向图的连通性问题,如用于Kruskal算法;
2、解决等价关系的查询(这是它的主要用武之地),如05年Baidu之星初赛的石头剪子布游戏;
3、优点是实现异常简单,缺点是合并后无法分离,若需要可以选择用动态树。

十、邻接表和边表:

1、表示图的最直接的方法;
2、后者更省空间,并且在一定程度上更好用,比如Bellman-Ford算法。
ps:数组、链表太基础不在考虑之列。
分享到:
评论
1 楼 dongbiying 2016-01-21  
不懂呀。。

相关推荐

    Java数据结构与算法15天笔记.zip

    9. **day13 程序员十大常用算法.md** - 这可能列出了一些程序员常遇到的问题,如字符串匹配、动态规划、贪心算法、回溯法等,这些都是解决实际编程问题时必备的工具。 10. **day15 树结构实际应用(一).md** - 同样...

    十大常用建模算法

    "十大常用建模算法"这个主题涵盖了多个关键算法,这些算法对于理解和实践建模编程至关重要。让我们逐一探讨这些算法以及它们在不同场景中的应用。 1. **聚类算法**: 聚类是一种无监督学习方法,用于将数据集中的...

    校园参观程序 数据结构C语言

    此外,邻接矩阵或邻接表也是常用的图数据结构,它们各有优缺点,选择哪种取决于具体的性能需求和空间效率。 程序还需要实现各种操作,如添加新地点、建立连接、删除路径以及找到最佳路线。这需要使用到C语言中的...

    数据结构与算法

    数据结构与算法是计算机科学的基础,对于理解和设计高效的软件至关重要。在这个资料包中,我们可以深入学习两个关键领域:线性表和排序算法。 线性表是一种基本的数据结构,它是由相同类型元素组成的有限序列,可以...

    计算机二级VB十大常用算法

    VB中的十大常用算法是计算机二级考试中经常出现的重点内容,这些算法在编程解决问题时具有广泛的实用性。以下是关于累加与连乘、最值问题、最大公约数与最小公倍数以及字符串处理等算法的详细解释和示例: 1. 累加...

    数据结构:一篇拿捏十大排序(超详细版)

    这篇超详细的文章“数据结构:一篇拿捏十大排序”深入探讨了八大常用排序算法,旨在帮助读者掌握这些核心概念。 首先,我们来详细了解这八大排序算法: 1. **冒泡排序**:是最简单的排序方法,通过重复遍历数组,...

    十大常用MySql优化手段

    ### 十大常用MySQL优化手段详解 #### 一、使用LIMIT 1获取唯一一行数据 在查询时,如果已知结果集中只会返回一行数据,可以使用`LIMIT 1`来限制返回的结果行数,这样可以减少不必要的计算资源消耗。例如,在用户...

    十大常用排序算法的实现及其可视化

    在计算机科学领域,排序算法是数据结构与算法中不可或缺的一部分,它用于将一组无序的数据按照特定顺序排列。本文将详细介绍十大常用的排序算法,并提供源代码实现和可视化展示,帮助读者深入理解各种排序算法的工作...

    数学建模常用十大算法

    以下将详细介绍标题中提到的"数学建模常用十大算法",以及它们在MATLAB中的应用。 1. **Floyd算法**:弗洛伊德算法是一种用于查找图中所有顶点对之间的最短路径的动态规划方法。在MATLAB中,通过构建邻接矩阵或邻接...

    数模十大常用算法及说明.docx

    【数模十大常用算法及说明】 在数学建模竞赛中,掌握一系列核心算法至关重要,因为它们可以帮助参赛者解决各种复杂问题。以下是对这些算法的详细解释: 1. 蒙特卡罗算法:这是一种基于随机抽样的计算方法,用于...

    数据挖掘十大算法

    本资源聚焦于数据挖掘中的十大经典算法,这些算法是数据科学家和分析师在处理各种实际问题时常用的工具。由李文波和吴素研翻译的《数据挖掘十大算法》一书,由清华大学出版社出版,为读者提供了深入理解这些算法的...

    机器学习十大常用算法的通俗理解

    ### 机器学习十大常用算法的通俗理解 #### 决策树 决策树是一种直观的、易于理解的机器学习方法,用于解决分类问题。它的工作原理是通过一系列的问题将输入的数据分成不同的类别。每个问题(即节点)都是基于数据...

    csmar国泰安常用控制变量数据大合集

    csmar国泰安常用控制变量数据大合集 指标如下: 代码 年代 简称 行业 行业代码 成立日期 上市日期 年份 是否新能源企业 研发投入 研发投入比营业收入 政府补助 税收减免 公司规模 资产负债率 第一大股东比% 上市年限...

    数学建模的十大常用算法

    如果模型存在局限性,比如不能很好地描述特定时段的人口变化,可能需要调整假设,例如引入年龄结构等因素,构建更复杂的模型。 在数据资料建模中,当问题涉及到因果关系的识别,但缺乏解析表达式时,可以通过数据...

    轻松看懂机器学习十大常用算法知识分享.docx

    本文将介绍十大机器学习的常用算法,帮助你轻松理解这些算法的基本概念和应用场景。 1. **决策树**:决策树是一种基于特征进行分类的算法。每个内部节点代表一个特征,每个分支代表该特征的一个可能值,而叶节点则...

    数据挖掘十大经典算法.doc

    决策树算法是数据挖掘中一种常用的分类算法,它可以将复杂的决策过程转化为树形结构,易于人类理解和分析。决策树算法的工作原理是自上而下的,选择分割的方法有多种,但是目的都是对目标类尝试进行最佳的分割。决策...

    中国十大城市群行政区划数据(shp格式)_珠江三角洲城市群.rar

    "shp格式"是地理信息系统(GIS)中常用的一种矢量数据格式,用于存储地理特征如点、线、面等。而".rar"则表明这个数据集是以RAR压缩文件的形式提供的。 【描述解析】 描述部分"中国十大城市群行政区划数据(shp格式...

Global site tag (gtag.js) - Google Analytics