懵懂的菜鸟

Stay hungry,Stay foolish.

导航

算法入门基础

1 数据结构

  1. 链表:单链表,循环链表,双向链表 LikedList<>

    特点:适合增删,不适合查找

  2. 数组

    特点:适合查找,不适合增删

  深度优先搜索算法,会选择最新的数据最为候补顶点

  1. 队列

    广度优先搜索算法,会从搜索候补集中选择最早的作为下一个顶点

  2. 哈希表

    链地址法:若发生冲突,利用链表在以后数据的后面插入新的数据来解决冲突

  3. 适合频繁从数据中取出最大或最小值。比如迪杰斯特拉算法

    堆的特点:

    1. 堆是一个完全二叉树
    2. 堆中每个节点的值总大于或小于孩子节点的值
    3. 堆中每个节点的子树都是堆
    4. 重构,插入的时间复杂度log2n
  4. 完全二叉树:除了最后一层外,每个节点均达到最大值,最后一层只缺少右边的值。

    满二叉树:所有节点均有两个子节点。

    二叉查找树:

    1)若左子树不为空,则左子树结点均小于它的根结点

    2)若右子树不为空,则右子树结点均大于它的根结点

    平衡二叉树:左右子树高度之差不大于1.

2 排序

  1. 冒泡排序
  2. 选择排序
  3. 插入排序
  4. 堆排序
  5. 归并排序
  6. 快速排序(分治法)

 

3 数组的查找

  1. 线性查找
  2. 二分查找

 

4 图的搜索

  1. 广度优先搜索
  2. 深度优先搜索
  3. 贝尔曼-福特算法(Bellman Ford),曾提出动态规划算法,用于处理最短路径问题,适合存在负权重的图
  4. 狄克斯特拉算法(Dijkstra),用于处理最短路径问题,适合不存在负权重的图
  5. A*算法,启发式算法,人工干预,距离估算值。

    分别计算起点周围每个顶点的权重。计算方法"从起点到该顶点的距离"加上"距离估算值"。

    该算法常用于游戏中计算敌人追该玩家的行动路线等。

5 安全和算法

  1. 四个问题:窃听,假冒,篡改,事后否认,

    分别对应的处理方式加密,消息认证码,数字签名,数字证书

  2. 哈希函数 密码加密
  3. 公开密钥加密 无法显示自己是由谁生成的。不对称
  4. 共享密钥加密 对称
  5. 混合加密。 对共享秘钥进行公开秘钥加密

    SSL(secure sockets layer,安全套接字),新名TLS

  6.迪菲赫尔曼密钥

  7.消息认证码的作用:认证,检测篡改

  8.数字签名的作用:认证,检测篡改,预防事后否认

  9.数字证书的所用:认证,检测篡改,防止冒名

6 聚类和其他

  1. k_means
  2. 欧几里得算法 求两个大数的最大公约数
  3. 素性检测 费马小定理
  4. 网页排名
  5. 汉诺塔-递归

递归

  分而治之(Divide and conquer)

  原理:

  1)找出简单的基线条件

  2)确定如何缩小问题的规模,使其符合基线条件

 

posted on 2019-05-10 23:28  懵懂的菜鸟  阅读(887)  评论(0编辑  收藏  举报