八大基础算法 自己的通俗理解
2016-08-05 00:05
190 查看
一些基础算法的理解,包括模拟法的理解。
1.模拟法:
将自然的过程或者语言直白的程序化,比如题目中的求解过程,我们直接程序化模拟求解。
2.字符串处理:
常用的字符串操作,KMP字符串匹配算法(用于复杂度高,需要优化时)。
3.递归:
古之欲明明德于天下者,先治其国;欲治其国者,先齐其家;欲齐其家者,先修其身;欲修其身者,先正其心;欲正其心者,先诚其意;欲诚其意者,先致其知,致知在格物。物格而后知至,知至而后意诚,意诚而后心正,心正而后身修,身修而后家齐,家齐而后国治,国治而后天下平。
当栈底不可见的时候,我们更适合用递归,当然递归也可以转化为 数组或变量和循环,但大多数情况下没有这个必要。
很多简单的递归我们完全可以利用循环来解决。比如很浅的调用之前的数据,且数据量固定。
和循环相比是两种思考的方向。
4.分治法:
将大的问题转化为很多小问题来解决,比如我要给8个数排序,我可以先给两组4个数排序,给4个数排序可以先给两组两个数排序,这样就讲大问题化成了小问题。
5.排序:
熟练的掌握sort()的用法。sort(arr,arr+len,cmp),了解各大排序法的思想。
6.枚举法:
当可能的结果不多时,我们可以利用模拟法求解,然后利用数组保存,直接利用枚举法进行匹配。
7.贪心算法:
选择目前的最优解,还要选取合适的策略,此处的最优解可以累积成为最后的最优解。对于一些处理过的值,可以进行标记和保存,便于我们从中选择最优解,并在最优解的基础上更加接近最后的最优解。
8.递推法:
分为顺推和逆推,根据相对应的关系和值进行递推,比如斐波那契数列就是顺推。顺推有点像模拟。
1.模拟法:
将自然的过程或者语言直白的程序化,比如题目中的求解过程,我们直接程序化模拟求解。
2.字符串处理:
常用的字符串操作,KMP字符串匹配算法(用于复杂度高,需要优化时)。
3.递归:
古之欲明明德于天下者,先治其国;欲治其国者,先齐其家;欲齐其家者,先修其身;欲修其身者,先正其心;欲正其心者,先诚其意;欲诚其意者,先致其知,致知在格物。物格而后知至,知至而后意诚,意诚而后心正,心正而后身修,身修而后家齐,家齐而后国治,国治而后天下平。
当栈底不可见的时候,我们更适合用递归,当然递归也可以转化为 数组或变量和循环,但大多数情况下没有这个必要。
很多简单的递归我们完全可以利用循环来解决。比如很浅的调用之前的数据,且数据量固定。
和循环相比是两种思考的方向。
4.分治法:
将大的问题转化为很多小问题来解决,比如我要给8个数排序,我可以先给两组4个数排序,给4个数排序可以先给两组两个数排序,这样就讲大问题化成了小问题。
5.排序:
熟练的掌握sort()的用法。sort(arr,arr+len,cmp),了解各大排序法的思想。
6.枚举法:
当可能的结果不多时,我们可以利用模拟法求解,然后利用数组保存,直接利用枚举法进行匹配。
7.贪心算法:
选择目前的最优解,还要选取合适的策略,此处的最优解可以累积成为最后的最优解。对于一些处理过的值,可以进行标记和保存,便于我们从中选择最优解,并在最优解的基础上更加接近最后的最优解。
8.递推法:
分为顺推和逆推,根据相对应的关系和值进行递推,比如斐波那契数列就是顺推。顺推有点像模拟。
相关文章推荐
- 教材上关于模式匹配中的求next数组的算法不易理解,本人自己编写了一个具有相同功能的子函数
- 对于PKI(公钥基础结构)及证书服务的通俗理解
- OpenCV下利用傅里叶变换和逆变换实现图像卷积算法,并附自己对于卷积核/模板核算子的理解!
- jvm 分代回收算法通俗理解
- 通俗理解神经网络BP传播算法
- 自己常常遗忘的东西,基础太重要了啊 java static 理解
- 深度学习 16. 反向传递算法最简单的理解与提高,BP算法,Backpropagation, 自己的心得。
- ACM 算法竞赛 八大基础算法 模拟法 字符串 递归分治 排序 枚举 贪心 递推
- 初涉网络,自己对服务器的一些基础理解
- PID控制算法通俗理解
- 匈牙利算法;直接贴来的;理解交替轨的基础上,画图看一下算法流程,发现没有问题;
- ARM基础:ARM知识通俗理解
- 协方差矩阵的概念,算法以及自己的一些理解
- 算法系列_基础01_O(nlogn)的理解
- c++基础知识,有现成的函数不用,非的自己设计算法,这不是坑爹吗?
- 今天看了网络编程的基础孙鑫写的稍微给自己理解到得东西做了下总结!
- 自己对java数据结构跟算法的一点理解把
- 毕向东JAVA基础_异常总结笔记及自己观点理解
- 深入理解strus,根据MVC自己动手搭建Struts基础框架
- pid控制算法通俗理解