zoukankan      html  css  js  c++  java
  • 基本算法概论

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

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

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

      分治法着重于从中间开始考虑

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

      贪心法着重于从整体开始考虑,找出最优值后得到子结构

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

      搜索类算法最粗糙的是暴力枚举。主要需要明确是否能有序穷举解空间。

      回溯法建立在深度优先搜索的基础上;

      分支限界法建立在广度优先的基础上(分支限界维护一个优先队列,按照广度优先扩展并计算优先值,然后放入优先队列中并选出最优点作为下一个扩展点)。 Dijkstra算法最好归结为分支限界,每次从队列中选择最短路径的最小值进行扩展。

    3、排序类算法:

    冒泡、插入、选择

    快排、归并、堆、希尔

    计数、基数、桶

    4、查找类算法:

    遍历查找、二分查找

    索引查找、哈希表

  • 相关阅读:
    == 和equals方法
    ObjectInputStream 与ObjectOutputStream
    IOS基础:ObjectiveC 数组处理
    学习笔记:自定义方法的两种实现方式
    DatePicker 获取时间的时区问题
    IOS基础:tableview中cell
    IOS基础:窗口切换的几种方法
    IOS基础:ObjectiveC 字符串处理
    使用 Notifications
    学习笔记:Tab Bar 控件使用详解
  • 原文地址:https://www.cnblogs.com/littlebugfish/p/4321695.html
Copyright © 2011-2022 走看看