目录
算法的概念
由一系列有限指令组成,完成某个任务的策略。
算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
算法特效:
-
有穷性 (Finiteness):算法的有穷性是指算法必须能在执行有限个步骤之后终止;
-
确切性 (Definiteness) :算法的每一步骤必须有确切的定义;
-
输入项 (Input) :一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;
-
输出项 (Output) :一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;
-
可行性 (Effectiveness) :算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步骤,即每个计算步骤都可以在有限时间内完成(也称之为有效性)。
算法的衡量
-
时间复杂度(运行次数)
-
空间复杂度(变量个数)
时间复杂度
for(int i = 0;i < n;i++){
for(int j = 0;j < 2 * n + 1;j++){
...
}
}
执行次数为 2 n * n + n
-
去掉常量
-
保留最高阶 2 n2
-
去掉系数 n2
-
以O括起来 ---> O(n2)
for(int i = 0;i < 1000;i++){
...
}
时间复杂度: 如果是固定的值 记为 O(1)
for(int i = 0;i < 2 * n + 200;i++){
..
}
时间复杂度: O(n)
for(int i = 0;i < 2 * n + 200;i+=2){
..
}
时