十大常用数据结构

转载 2015年11月19日 13:47:42
一、栈:

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:数组、链表太基础不在考虑之列。

轻松看懂机器学习十大常用算法

转自:http://mp.sohu.com/profile?xpt=bWF0aGFuZGFsZ29yaXRobUBzb2h1LmNvbQ== 通过本篇文章大家可以对ML的常用算法形成常识性的认识...
  • k_shmily
  • k_shmily
  • 2016年11月07日 08:56
  • 3245

十大常用数据结构

十大常用数据结构一、栈: 1、后缀表达式的求值; 2、中缀到后缀表达式的转换; 3、深度优先搜索的非递归实现; 4、动态规划的优化:用于维护一个凸序列,便于二分查找,如LIS问题...
  • waltertan1988
  • waltertan1988
  • 2015年04月26日 20:33
  • 232

十大常用数据结构

一、栈: 1、后缀表达式的求值;  2、中缀到后缀表达式的转换;  3、深度优先搜索的非递归实现;  4、动态规划的优化:用于维护一个凸序列,便于二分查找,如LIS问题的O(nlg...
  • u011240067
  • u011240067
  • 2015年10月14日 15:48
  • 296

十大常用数据结构

一、栈:  1、后缀表达式的求值;  2、中缀到后缀表达式的转换;  3、深度优先搜索的非递归实现;  4、动态规划的优化:用于维护一个凸序列,便于二分查找,如LIS问题的O(nlgn)算...
  • qingfengrambo
  • qingfengrambo
  • 2014年11月17日 22:51
  • 219

十大常用数据结构

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

java常用数据结构

一、数据结构概念     用我的理解,数据结构包含数据和结构,通俗一点就是将数据按照一定的结构组合起来,不同的组合方式会有不同的效率,使用不同的场景,如此而已。比如我们最常用的数组,就是一种数据...
  • zuoer8676
  • zuoer8676
  • 2015年03月11日 22:32
  • 1722

数据结构中常用算法

排序常用的算法有:插入算法(直接插入算法、折半插入算法、希尔算法)、选择算法(简单选择算法、堆排序算法)、快速算法(冒泡排序、快速排序算法) 以下程序给出了各种算法的实现,其接口为void sort...
  • ProgramVAE
  • ProgramVAE
  • 2016年12月02日 16:55
  • 473

Linux常用十大类命令书册

1、Linux管理文件和目录的命令 命令 功能 命令 功能 pwd 显示当前目录 ls 查看目录下的内容...
  • m0_37284701
  • m0_37284701
  • 2017年03月07日 19:44
  • 196

常用数据结构介绍

常用的数据结构介绍 0.数组:顺序存储,随机访问   链表:链表存储,顺序访问 1.栈 2.队列 3.串 4.树 1)二叉树 2)遍历二叉树: 前序(先中间,再左边,后右边) 中序(先左边,再...
  • BigWatermelon11
  • BigWatermelon11
  • 2017年08月08日 16:03
  • 313

【人工智能】数据挖掘领域的十大经典算法

来自:csdn博客 数据挖掘十大经典算法 国际权威的学术组织the IEEE International Conference on Data Mining (ICDM) 2006年12月评选出...
  • chenglibin1988
  • chenglibin1988
  • 2013年03月13日 11:05
  • 7038
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:十大常用数据结构
举报原因:
原因补充:

(最多只允许输入30个字)