1、什么是算法
算法是对特定问题求解步骤(过程)的一种描述,它是一系列的数据指令通过一定的顺序形成的组合,其中每一个指令都表示一个或者多个操作。
2、算法的特性
算法有以下几个重要的特性:有穷性,确定性,可行性,输入和输出。
2.1、有穷性
一个算法必须在执行有穷的步骤后结束,而且每一步也都需要在有穷的时间内完成。
2.2、确定性
对于每种情况下所执行的操作,在算法中都应该有明确的规定,是算法的执行者和阅读者都能明确其含义以及如何执行。并且在任何条件下,算法都只有一条执行路径。
2.3、可行性
算法中的所有操作都必须足够的基本,都可以通过已经实现的基本操作运算在有限次的组合实现。
2.4、输入
输入参数作为算法的处理对象,是需要存在的。因为没有处理对象的算法是没有意义的。
2,5、输出
输出与输入相对应,输入参数在经过算法处理后,必会得到一个处理结果。
3、算法描述
算法描述指的是根据自然语言或者某种计算机语言给出算法的一系列指令组合系列。通常我们会使用“伪代码”来描述。
4、算法设计的目标
算法设计的目标是:正确性,可使用性,可读性,健壮性以及算法效率;其中算法的效率我们通常使用算法的时间复杂度和空间复杂度来描述。
4.1、正确性
正确性是算法设计的最基本要求,我们设计的每一个算法都必须保证其能够正确的执行预先规定的功能和性能要求。
4.2、可使用性
可使用性也通常被称为用户友好性,要求算法能够很方便的使用。
4.3、可读性
算法的可读性简单来说就是易于理解性,所以我们设计算法时,也应尽量保持算法的逻辑是清晰、简单的和结构化的。
4.4、健壮性
健壮性可以说也是算法的一个比较重要的特性,因为我们要保证我们的算法不会经常出现异常中断或者死机的现象,因为我们在进行算法设计时,必须要保证算法具有很好的容错性,即提供异常处理机制,能够对不合理的数据进行检查。
4.5、算法效率
通常我们说算法的效率一般都是指算法执行的时间。对于同一个问题,如果存在多个求解算法,那么我么就认为耗费时间最少的那个效率最高。但是实际上算法的效率和问题的规范以及使用的内存空间有关。
4.6、算法的时间复杂度
算法扥时间复杂度以算法中基本操作重复执行的次数(也成为 频度)为度量;一般在求算法时间复杂度时并不是给出准确的精度,只要大致计算出相应的量级即可,比如O(1), O(n), O(log2n),O(n^2)等。
4.7、算法的空间复杂度
算法的空间复杂度是指算法所需存储空间的量度,主要考虑在算法执行过程中临时占用的存储空间的大小。