算法和数据结构
轩辕夏禹
这个作者很懒,什么都没留下…
展开
-
算法策略总结
http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741482.html策略是面向问题的,算法是面向实现的。 一、不同算法策略特点小结1、贪心策略 贪心策略一方面是求解过程比较简单的算法,另一方面它又是对能适用问题的条件要求最严格(即适用范围很小)的算法。 贪心策略解决转载 2013-04-16 20:25:30 · 810 阅读 · 0 评论 -
贪心算法
http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741375.html贪心算法一、基本概念: 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。 贪心算法没有固定的算法框架,算法设计的关键是贪心策略的转载 2013-04-16 20:14:27 · 666 阅读 · 0 评论 -
分支限界法
分支限界法一、基本描述 类似于回溯法,也是一种在问题的解空间树T上搜索问题解的算法。但在一般情况下,分支限界法与回溯法的求解目标不同。回溯法的求解目标是找出T中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出使某一目标函数值达到极大或极小的解,即在某种意义下的最优解。 (1)分支搜索算法 所谓“分转载 2013-04-16 20:24:26 · 707 阅读 · 0 评论 -
分治算法
http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741370.html分治算法一、基本概念 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子转载 2013-04-16 20:11:30 · 596 阅读 · 0 评论 -
回溯法
1、概念 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。 回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。转载 2013-04-16 20:21:36 · 549 阅读 · 0 评论 -
堆排序,C++模板编程
http://www.cnblogs.com/hanxi/archive/2012/10/12/2721540.html在程序设计相关领域,堆(Heap)的概念主要涉及到两个方面:一种数据结构,逻辑上是一颗完全二叉树,存储上是一个数组对象(二叉堆)。 垃圾收集存储区,是软件系统可以编程的内存区域。本文所说的堆,指的是前者。堆排序的时间复杂度是O(nlgN),与快速排序达到相同的转载 2013-04-27 21:28:00 · 720 阅读 · 0 评论 -
常见排序算法 稳定性分析
首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。在简单形式化一下,如果Ai = Aj, Ai原来在位置前,排序后Ai还是要在Aj位置前。 其次,说一下稳定性的好处。排序算法如果是稳定的,那么从一个键上排序,然后再从另一个键上排序,第一个键排序的结果可以为第二个键排序所用。基数排序就是这样,先按低位转载 2013-05-29 22:26:32 · 607 阅读 · 0 评论 -
二叉树的非递归遍历
二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历中,前序和中序遍历的非递归算法都很容易实现,非递归后序遍历实现起来相对来说要难一点。一.前序遍历 前序转载 2014-05-26 21:08:37 · 592 阅读 · 0 评论