1 数据结构
-
链表:单链表,循环链表,双向链表 LikedList<>
特点:适合增删,不适合查找
-
数组
特点:适合查找,不适合增删
-
栈
深度优先搜索算法,会选择最新的数据最为候补顶点
-
队列
广度优先搜索算法,会从搜索候补集中选择最早的作为下一个顶点
-
哈希表
链地址法:若发生冲突,利用链表在以后数据的后面插入新的数据来解决冲突
-
堆
适合频繁从数据中取出最大或最小值。比如迪杰斯特拉算法
堆的特点:
-
堆是一个完全二叉树
-
堆中每个节点的值总大于或小于孩子节点的值
-
堆中每个节点的子树都是堆
-
重构,插入的时间复杂度log2n
-
-
完全二叉树:除了最后一层外,每个节点均达到最大值,最后一层只缺少右边的值。
满二叉树:所有节点均有两个子节点。
二叉查找树:
1)若左子树不为空,则左子树结点均小于它的根结点
2)若右子树不为空,则右子树结点均大于它的根结点
平衡二叉树:左右子树高度之差不大于1.
2 排序
-
冒泡排序
-
选择排序
-
插入排序
-
堆排序
-
归并排序
-
快速排序(分治法)
3 数组的查找
-
线性查找
-
二分查找
4 图的搜索
-
广度优先搜索
-
深度优先搜索
-
贝尔曼-福特算法(Bellman Ford),曾提出动态规划算法,用于处理最短路径问题,适合存在负权重的图
-
狄克斯特拉算法(Dijkstra),用于处理最短路径问题,适合不存在负权重的图
-
A*算法,启发式算法,人工干预,距离估算值。
分别计算起点周围每个顶点的权重。计算方法"从起点到该顶点的距离"加上"距离估算值"。
该算法常用于游戏中计算敌人追该玩家的行动路线等。
5 安全和算法
-
四个问题:窃听,假冒,篡改,事后否认,
分别对应的处理方式加密,消息认证码,数字签名,数字证书
-
哈希函数 密码加密
-
公开密钥加密 无法显示自己是由谁生成的。不对称
-
共享密钥加密 对称
-
混合加密。 对共享秘钥进行公开秘钥加密
SSL(secure sockets layer,安全套接字),新名TLS
6.迪菲赫尔曼密钥
7.消息认证码的作用:认证,检测篡改
8.数字签名的作用:认证,检测篡改,预防事后否认
9.数字证书的所用:认证,检测篡改,防止冒名
6 聚类和其他
-
k_means
-
欧几里得算法 求两个大数的最大公约数
-
素性检测 费马小定理
-
网页排名
-
汉诺塔-递归
递归
分而治之(Divide and conquer)
原理:
1)找出简单的基线条件
2)确定如何缩小问题的规模,使其符合基线条件