目录
- 一. 算法的基本概念
- 1.1 什么是算法
- 1.2 算法的五个特性
- 1.3 怎么才算好的算法
- 二. 算法的时间复杂度
- 三. 算法的空间复杂度
\quad
一. 算法的基本概念
\quad
\quad
1.1 什么是算法
算法可以用自然语言来描述, 也可以用伪代码和代码来描述
\quad
1.2 算法的五个特性
有穷性, 一个算法必须总在执行有穷步之后结束,且每一步都可在有穷时间内完成。
所以死循环就不是算法
\quad
\quad
确定性, 算法中每条指令必须有确切的含义,对于相同的输入只能得出相同的输出。
按照年龄来排会得到下面两个结果
解决方法可以是岁数相同的话, 就按金额来排
\quad
\quad
可行性。算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现。
可行性说白了就是可以实现的
输入。一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合。
输出。一个算法有一个或多个输出,这些输出是与输入有着某种特定关系的量。
\quad
\quad
1.3 怎么才算好的算法
\quad
1.正确性。算法应能够正确地解决求解问题。
2.可读性。算法应具有良好的可读性,以帮助人们理解。(多写注释)
3.健壮性。输入非法数据时,算法能适当地做出反应或进行处理,而不会产生莫名其妙的输出结果。
4.高效率(时间复杂度)与低存储量需求(空间复杂度)
\quad
二. 算法的时间复杂度
\quad
\quad
\quad
\quad
\quad
在外面套个O
\quad
\quad
重点, 判断时间复杂度
\quad
\quad
\quad
\quad
\quad
三. 算法的空间复杂度
\quad
n是问题规模, 不管n的值是如何变化, 这个算法在执行的过程当中它所需要的内存空间大小都是固定不变的
算法所需的内存空间为常量, 称为算法原地工作
虽然都是n,a,b,c但是每一次调用都是开辟新的空间
空间复杂度=递归调用的深度