主要学习的算法有:
查找和排序:
折半查找
排序:
冒泡
插入
选择
快速排序
归并排序
算法的书籍有:
严蔚敏的书,用伪算法的方式讲解了常见优秀的算法的原理
高一凡的书,用C和C++把严蔚敏讲的算法给实现了
算法的概念
我们已经把事物保存到内存中了,接下去我们为实现某个功能对事物进行一些操作,这些操作叫算法
算法分广义算法和狭义算法
广义角度的算法:算法和存储的方式没有关系(泛型)
狭义角度的算法:事物使用不同的存储方式,实现同个操作,使用的算法 不一样,我们讨论的是狭义的算法
我们讨论的算法,依赖于存储结构,依赖于事物的存储方式
例如同样是查找某个元素
查找数组某个元素的算法 和 查号树某个元素的算法 完全不一样
衡量算法的标准
一个算法怎么样,主要评价它的健壮性,难易程度,时间复杂度和空间复杂度
1. 时间复杂度(主)
程序大概要执行的次数,而非执行的时间
时间复杂度不是按时间算的,因为不同机器执行的快慢不同
时间复杂度计算的是程序执行的次数,主要计算循环
主要看最复杂的那一步执行了多少次
2. 空间复杂度
算法执行过程中大概所占用的最大的内存
如果空间复杂度过大,那么这个算法就要占用很大的内存
3. 难易程度
算法是否难以理解?
4. 健壮性
算法是否能应对一切情况,输入非法值,算法会不会挂?
平时研究主要考虑时间复杂度和空间复杂度,在公司工作主要考虑难易程度
原文:https://www.cnblogs.com/chrr/p/12367872.html