目录
算法
算法是一系列程序指令,用于处理特定的运算和逻辑问题。
例:1+2+3...+100
int i, sum=0, n=100;
for(i = 1; i <=n; i++){
sum = sum + i;
}
printf("%d", sum);
等差数列:Sn=( a1 + an ) * n /2 = n* a1+n * (n-1) * d/2
int i, sum = 0, n=100;
sum = ( 1 + n ) * n /2;
printf("%d", sum);
- 算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。
- 算法的五个基本特性:输入、输出、有穷性、确定性、可行性。
- 算法的设计要求:正确性、可读性、健壮性、高效率、低存储量。
时间复杂度 T(n)=O(f(n))
渐进时间复杂度: 若存在函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不
等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称
为O(f(n)),O为算法的渐进时间复杂度,简称为时间复杂度。
————时间复杂度就是把程序的相对执行时间函数T(n)简化为一个数量级,这个数量级可以是n、n
2、n3等。
O(1)常数阶、O(n)线性阶、O(n²)平方阶、O(logn)对数阶
推导大O阶方法:
- 用常数1取代所有加法常数;
- 只保留最高项;
- 如果最高阶存在且不是1,则去除掉最高阶项前面的系数。
得到的结果就是大O阶。
对数阶:
2^x=n,得到x=log2n。
最坏情况与平均情况,没有特殊说明的情况下都指最坏时间复杂度
空间复杂度 S(n)=O(f(n))
对一个算法在运行过程中临时占用存储空间大小的量度。n为问题的规模,f(n)为算法所占用存储空间的函数。
递归操作的空间复杂度也是线性的,如果递归的深度是n,那么空间复杂度就是O(n)。
1. 衡量算法优劣的主要标准是时间复杂度和空间复杂度。
2. 数据结构是数据的组织、管理和存储格式,其使用目的是为了高效
地访问和修改数据。
3. 时间复杂度是对一个算法运行时间长短的量度,用大O表示,记作
T(n)=O(f(n))。
4. 空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量
度,用大O表示,记作S(n)=O(f(n))。其中递归算法的空间复杂度和递归深度成正比。
标签:递归,复杂度,算法,时间,数据结构,sum
From: https://www.cnblogs.com/Jusaka-12/p/17608511.html