Atitit.软件中见算法 程序设计五大种类算法
Atitit.软件中见算法 程序设计五大种类算法
1. 算法的定义
算法(Algorithm)是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。 算法可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤。或者看成按照要求设计好的有限的确切的计算序列,并且这样的步骤和序列可以解决一类问题。
>>阅读全文
2. 算法的复杂度
同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。一个算法的评价主要从时间复杂度和空间复杂度来考虑。 算法的时间复杂度是指算法需要消耗的时间资源。一般来说,计算机算法是问题规模n 的函数f(n),算法的时间复杂度也因此记做 T(n)=Ο(f(n)) 因此,问题的规模n 越大,算法执行的时间的增长率与f(n) 的增长率正相关,称作渐进时间复杂度。 算法的空间复杂度是指算法需要消耗的空间资源。其计算和表示方法与时间复杂度类似,一般都用复杂度的渐近性来表示。同时间复杂度相比,空间复杂度的分析要简单得多。
>>阅读全文
2.1. Algo cate
3. 分治法
在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。>>阅读全文 · 话说递归与HANOI塔
· 二分法求方程近似解
· 用C++实现合并排序
· 求最大值和最小值的分治算法
4. 动态规划法
最优化原理是动态规划的基础。“一个过程的最优决策具有这样的性质:即无论其初始状态和初始决策如何,其今后诸策略对以第一个决策所形成的状态作为初始状态的过程而言,必须构成最优策略”。简言之,一个最优策略的子策略,对于它的初态和终态而言也必是最优的。 >>阅读全文 · 动态规划求0/1背包问题
· 最长公共子串问题的实现
· 用动态规划实现导弹拦截
· 最大化投资回报问题的实现
5. 贪心算法
贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题他能产生整体最优解或者是整体最优解的近似解。 >>阅读全文 · 最小生成树之Prim算法
· 最小生成树之kruskal算法
· 贪心算法在背包中的应用
· 汽车加油问题之贪心算法
6. 回溯法
回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。>>阅读全文 · 回溯法之数的划分
· 回溯法求解 运动员最佳配对问题
· 回溯法解决汽车加油次数最少问题
· 用回溯法找出n个自然数中取r个数的全排列
7. 分支限界法
在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。>>阅读全文
算法分析与设计之五大常用算法_算法_C-C++频道_中国IT实验室技术专题.htm
代码面试最常用的10大算法 - 编程技术 - LUPA开源社区.htm
28个不得不看的经典编程算法!! - 程序语言 - 小木虫 - 学术 科研 第一站.htm
十大编程算法助程序员走上高手之路 - 技术文摘 - LUPA开源社区.htm
作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 )
汉字名:艾提拉(艾龙), EMAIL:1466519819@qq.com
转载请注明来源:attilax的专栏 http://blog.csdn.net/attilax
--Atiend