什么是算法?
程序=数据结构+算法
数据结构:把现实世界问题信息化,将信息存入计算机,同时实现对数据就结构的基本运算。
算法:处理这些信息,以解决实际问题。
算法的五个特性
1)有穷性:一个算法必须在执行有穷步之后结束,并且每一步都可在有穷时间内完成。
注:算法是用有穷步骤解决某个特定问题,所以算法必须是有穷的;而程序可以是无穷的,例如外卖的取号系统就是一个程序,只要一直有人点外卖,那么它就可以永不停歇。
2)确定性:算法中的每一条指令必须有确切的含义,对于相同的输入只能得到相同的输出。
3)可行性:算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现。
4)输入:一个算法有零个或多个输入,这些输入取自某个特定的对象的集合。
5)输出:一个算法有一个或多个输出,这些输出是与输入有着某种特定关系的量。
“好”算法的特质
1)正确性:算法应当能够正确地解决求解问题。
2)可读性:算法应当具有良好的可读性,以帮助人们理解。
注:算法可以用伪代码描述,甚至可以用文字描述,重要的是要“无歧义”地描述出解决问题的步骤。
3)健壮性:输入非法数据的时候,算法能适当做出反应或进行处理,而不是输出一些奇怪的输出结果。
4)高效率与低存储量要求
高效率:执行速度快,时间复杂度低。
低存储需求:不费内存,空间复杂度低。