this is an repository of algorithm
- 数组与链表都可以用于存储大量元素
- 数组擅长查找, 链表擅长插入删除
- 递归指的是调用自己的函数
- 基线条件和递归条件
- 栈有两种操作:压入与弹出
- 所有函数调用都进入调用栈
- 调用栈可能很长,占用大量内存
问1:什么是快速排序(使用分而治之的策略)
- 输入一个值,对应另外的值,一种映射。 js的对象 python的字典。
- 实际应用 域名映射ip地址 该过程叫dns解析
- 冲突 散列函数 不能完美地分配每一个地址 当键位存在同一个内存中时 会以链表方式存储 效率就会下降。
- 较低的填充因子,较好的散列函数
- SHA算法
- 散列表的性能 散列表由数组与散列函数组成 数据=> 散列函数 => 存储在数组的位置 映射关系
- 一般填充因子为0.7的时候加长 但是这个应该跟散列函数的性能有关
散列表是一种很优秀的数据结构,查找插入删除 在均匀分布的情况下能够达到O(1),极限分布情况下,也不过是O(N)。可用作缓存,防止重复等功能。
-
广度优先算法 一般解决 最短路径问题 或者 某一点是否能到另一点的路径问题
-
首先了解什么是图 用节点(node) 跟边(edge)组成
-
反转链表