算法学习
凉茶方便面
学习
展开
-
八大内部排序算法总结
各种内部排序算法的简单总结:插入排序:直接插入排序插入排序:Shell排序选择排序:直接选择排序选择排序:堆排序交换排序:冒泡排序交换排序:快速排序归并排序基数排序原创 2016-08-18 21:37:45 · 718 阅读 · 0 评论 -
算法学习—动态规划
动态规划(dynamic programming)是通过组合子问题来求解原问题的方法,它倾向于解决子问题重叠的情况,即不同子问题具有公共的子问题。从这方面来看,动态规划都可以用递归来实现,但是递归是从上到下的思路进行处理的,也就是说递归是从完整的问题,逐次向子问题求解的过程,但是动态规划却是从规模最小的子问题开始,向上逐步求解,求解过程中保存这些小规模的子问题作为求解大问题的依据,并最终求出结果。例如求解斐波那契数列,使用递归的思路是从f(n)依次向下求解f(n-1)和f(n-2),但是使用动态规划的思路原创 2016-08-20 21:41:48 · 1722 阅读 · 0 评论 -
Binary Search Tree(二叉搜索树、二叉查找树、二叉排序树)
搜索树数据结构支持许多动态几何操作,包括SEARCH、MININUM、MAXINUM、PREDECESSOR、SUCCESSOR、INSERT和DELETE等。因此,我们可以使用一个搜索树作为字典或者优先队列。二叉搜索树上的基本操作所花费的时间与所花费的时间与这棵树的高度成正比。对于有n个结点的一棵完全二叉树来说,这些操作的最坏运行时间为Θ(logn)。然而如果这棵树是一条n个结点构成的线性链表(最坏情况下),那么同样的操作就要花费Θ(n)的最坏运行时间。原创 2016-08-20 22:32:09 · 1257 阅读 · 0 评论 -
Red Black Tree(红黑树)
当二叉平衡树在树高较高时,许多操作的代价较高,甚至比不过链表,此时可以采用红黑树。红黑树是许多平衡搜索树中的一种,可以保证在最坏情况下基本动态集合操作的时间复杂度为O(lg n)。红黑树有很多的应用,其中比较多的应用是各种类库中的Map,在Java中的TreeMap就是使用红黑树构建的,C++中的STL带的Map的结构也是红黑树构建的。红黑树的性质红黑树是一种二叉搜索树,它在每个节点上增加一个存储节点颜色信息的位,可以是RED或BLACK。由于颜色的约束,红黑树保证没有一条路径比其他路径长2倍,因此近似原创 2016-09-07 22:01:25 · 974 阅读 · 0 评论