一.算法的基本概念:
二.算法的五个特性:算法必须具备的特性,缺一不可
1.有穷性:
一个算法必须总在执行有穷步之后结束,且每一步都可在有穷时间内完成。
注:算法(用有限步骤解决某个特定的问题)必须是有穷的,而程序可以是无穷或者有穷的
如:微信是程序,但不是算法,因为微信在一直工作;
死循环也不是算法;操作系统也不是算法,即使关机了,但后台操作系统仍在进行即无穷;
2.确定性:
算法中每条指令必须有确切的含义,对于相同的输入必须得出相同的输出。
例如:把第一行年龄按照递增排序
如果第一次输出为第二行的结果,第二次输出第三行的结果,那么这就不是算法,因为
尽管年龄排序的结果一致,但名字不一样,要想是算法,就必须输出结果要么一直是第二行结果,要么一直是第三行结果,不能一会儿第二行结果,一会儿第三行结果。
3.可行性:(有效性)
算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现。
4.输入:
一个算法有0个或者多个输入,这些输入取自于某个特定的对象的集合。
5.输出:
一个算法有1个或者多个输出,这些输出是与输入有着某种特定关系的量。
三.“好”算法的特质:设计算法时要尽量追求的目标
1.正确性:
算法应该能够正确地解决求解问题。
2.可读性:
算法应具有良好的可读性,以帮助人们理解。
3.健壮性:
输入非法数据时,算法能适当地做出反应或进行处理,而不会产生莫名其妙的输出结果。
4.高效率与低存储量需求:
高效率:花的时间少,时间复杂度低;
低存储量需求:不费内存,空间复杂度低。