算法(algorithm)
算法是什么?
算法是指令的集合,是为解决特定问题而规定的一系列操作。
它是明确定义的可计算过程,以一个数据集合作为输入,并产生一个数据集合作为输出。
一个算法通常来说具有以下五个特性:
1.输入:一个算法应该以待解决问题的信息作为输入。
2.输出:输入对应指令及处理后得到的信息。
3.可行性:算法是可行的,即算法中的每一条指令都是可以实现的,均能在有限的时间内完成。
4.有穷性:算法执行的指令个数是有限的,每个指令又是在有限时间内完成的,因此整个算法也是在有限时间内可以结束的。
5.确定性:算法对于特定的合法输入,其对应的输出是唯一的。即当算法从一个特定的输入开始,多次执行同一条指令集结果总是相同的。简单的说,算法就是计算机解题的过程。在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法。前者是算法的逻辑形式,后者是算法的代码形式。
举例:
如何求0+1+2+3+....+10000=?
算法一:依次相加(循环):while、do-while、for
算法二:高斯解法
首尾相加 * 50 : (1+10000)*10000/2 ---> 100 * 101/2
算法三:使用递归实现
sum(100) = sum(99)+100 --> sum(99) = sum(98)+99
....sum(2) = sum(1)+2 --> sum(1)=1
评价算法优劣的依据:复杂度(时间复杂度和空间复杂度)
算法的复杂性体现在运行该算法时的计算机所需资源的大小。
计算机资源最重要的是时间和空间资源,因此复杂度分为时间复杂度和空间复杂度
时间复杂度是执行算法所需要的计算工作量。
空间复杂度是指执行这个算法所需要的内存空间。