目录
算法的基本概念
什么是算法?
算法是对待问题求解步骤的一种描述,他是指令的有限序列,其中的每条指令表示一个和多个操作。
简而言之就是
解决问题的方法和步骤
算法与程序
算法是解决问题的一种方法或一个过程,考虑如何将输入换成输出,一个问题可以有多种算法。
- 程序是用某种程序设计语言对算法的具体实现。
- 程序 = 数据结构 + 算法
- 数据结构通过算法实现操作
- 算法根据数据结构设计程序
重要特性
- 有穷性:一个算法必须执行有穷步之后结束,其中的每条指令表示一个或多个操作
- 确定性:算法中每条指令必须有明确的含义,对于相同的输入只能得出相同的输出
- 可行性:算法中描述的操作都可以通过已经实现的基本运算执行有限次来实现
- 输入:一个算法有零个或者多个输入,这些输入取自于某个特定的对象的集合
- 输出:一个算法有一个或多个输出,这些输出是与输入有着某种特定的关系
优秀的算法标准
- 正确性:算法应能够正确地解决求解问题
- 可读性:算法应该具有良好的可读性,以帮助人们理解
- 健壮性:输入非法数据时,算法能适当地做出反应或进行处理,而不会产生莫名其妙的输出结果
- 效率与低储存量需求:效率是指算法执行的时间,存储量需求是指算法执行过程中所需要的最大储存空间,这两者都与问题规模有关
算法效率的度量
算法效率的度量是通过时间复杂度和空间复杂度来概述的
时间复杂度
一个语句的频率是指该语句在算法中被执行的次数
一般情况下,嵌套的循环次数是时间复杂度指数(存在特殊情况)
空间复杂度
算法的空间复杂度S(n)定义为该算法所耗费的存储空间,他是问题规模n的函数
算法原地工作是指算法所需要的存储空间为常量,即O(1)
计算规则
加法规则:O(f(n)) + O(g(n)) = O(max(f(n),g(n)))
乘法规则:O(f(n)) + O(g(n)) = O(f(n)*g(n))