码迷,mamicode.com
首页 > 编程语言 > 详细

基本算法概论

时间:2015-03-08 15:39:31      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:

  基本算法主要分为以下四类:

1、子结构类算法:分治算法,贪心法,动态规划

子结构问题主要是要知道怎么从子结构问题的解推出现在问题的解,最粗糙的是简单递归,在递归的基础上进行改进就形成了分治、贪心和动态规划。

      动态规划本质上只是减少了在递归过程中对子结构问题的重复求解,但是并没有缩小子结构问题的求解空间,所以有一些问题使用动态规划通常时间复杂度并没有减少到最小,这些问题通常需要更加巧妙的解法来实现最优的时间复杂度。

    分治法着重于中间

    1、动态规划着重从头尾考虑得到子结构

2、着重考虑从子结构推出现有结构,需要记录子结构值

贪心法着重于整体,找出最优

 

2、搜索类算法:回溯法,分支限界法 深度优先搜索 广度优先搜索

搜索类算法最粗糙的是暴力枚举,回溯法建立在深度优先搜索的基础上,分支限界法建立在广度优先的基础上(分支限界维护一个优先队列,按照广度优先扩展并计算优先值,然后放入优先队列中并选出最优点作为下一个扩展点)

   搜索类算法主要需要明确是否能有序穷举解空间。

    Dijkstra算法最好归结为分支限界,每次从队列中选择最短路径的最小值进行扩展

 

3、排序类算法:

冒泡、插入、选择

希尔、归并、堆、快排

计数、基数、桶

4、查找类算法:

遍历查找、二分查找

索引查找、哈希表

基本算法概论

标签:

原文地址:http://www.cnblogs.com/littlebugfish/p/4321695.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!