背景
最近总结下来想写一系列文章的专栏,先从算法导论入手, 巩固下基础知识体系,避免大脑秀逗。计划大概半年多时间抽炼出常见内容的系列大纲笔记,供记录和学习, 如有需要指正地方望邮件交流。
leecode 算法题目主要也是锻炼思考
1 | print 'life and world' |
简明摘要
一、基础部分
1.NP完全理论
- P:所有可以在多项式时间内求解的判定问题构成P类问题
- NP:所有的非确定性多项式时间可解的判定问题构成NP类问题
- NPC:NP中的某些问题的复杂性与整个类的复杂性相关联.这些问题中任何一个如果存在多项式时间的算法,那么所有NP问题都是多项式时间可解的.这些问题被称为NP-完全问题(NPC问题)
2.递归式
给出了递归式推导的三种方法 - 代换法:数学归纳,根据规律推测出递归式
- 递归树:分治时间复杂度的尤其适合递归树推算
- 主定理公式:定理4.1(主定理) 令a≥1和b>1是常数,f(n)是一个函数,T(n)是定义在非负整数上的递归式 T(n) = aT(n/b) + f(n)
3.概率分析与随机算法 - 随机算法,不依赖输入,输出和输入无关
二、排序算法与顺序统计
1.堆排序
- 堆:完全二叉树
- 大根堆,ASC排序
2.快排序 - piovit 枢纽元素x,p r对x比较 。回归x到正确位置。对左边的QS;对右边QS
3.线性时间排序 - 计数,确定数x在第几个位置
- 基数,0~9依次排序。 稳定
- 桶排序,均匀分布的放在排序号的桶,对桶中元素进行排序
4.中位数与顺序统计学
三、数据结构
1.栈与队列
- 特性
- 可以相互转化
2.链表 - 单向链表;表头;表尾
- 双向链表、带哨兵的环形双向链表(哑对象dummy)
3.散列表 - 散列函数:除法、乘法、全域散列
- 链表法、开放地址法(双重散列)
- 简单一致散列假设
4.二叉查找树 - 节点x, x左子树最大不超过x;x右子树最小不小于x
- 节点x:value,left、right、parent
5.红黑树 - 二叉查找树、平衡特性
- 根节点 黑色;节点或红或黑;叶子节点黑色(nil节点也称哨兵节点)
- 红节点的两个儿子都是黑节点
- 每个节点开始,到其子孙节点的所有路径上包含的黑节点个数相同
四、高级设计
1.动态规划
2.贪心算法
3.平摊分析
五、高级数据结构
1.B树:
六、图算法
1.图基本算法
2.最短路径、最小生成
七、算法研究
1.数论相关算法
2.字符串匹配
版权声明:本文为博主原创文章,未经允许不得转载。