为什么要学习算法?
【复习南开大学软件学院2021年秋季学期研究生算法课程】在有限时间和内存下,编写程序正确地或有效地解决问题 。
计算数列的第n项 算法一:递归函数
int F(int n){if(n<=2) return 1;return F(n-1)+F(n-2);}
算法二:递推循环
int F(int n){if(n<=2) return 1;int f1=1, f2=1;for(int i=3;i<=n;i++){int temp = f1+f2;f1=f2;f2=temp;}return f2;}
递归函数计算100项时,会无法完成计算,递推可以很快计算出100项 。
递归算法的时间复杂度为O(1.618^n),递推函数的时间复杂度为O(n) 。
算法三:矩阵快速幂算法
数列递推公式的矩阵形式
,数学通项公式的矩阵形式
即使有了通项公式,要计算n-2次幂还是需要O(n)时间
快速幂算法
每次迭代问题规模减半,时间复杂度O(log n)
class Matrix{Matrix operator*(const Matrix &);// ...};Matrix Quickpow(Matrix A, int n){if(n==1) return A;Matrix half = Quickpow(A, n/2);if(n%2==1){return A*half*half;}else{return half*half;}}int F(int n){if(n<=2) return 1;Matric A(1,1,1,0);A = Quickpow(A,n-2);return A[0][0] + A[0][1];}
当数据规模更大时,O(log n)能比O(n)快得更多
为什么学习算法
- 上海大学计算机考研数一数二,关于考研的数一数二有什么区别
- 1、关于大学生代拿外卖的痛点问题
- Java 大学B组 第十届蓝桥杯 2019年国赛真题
- Java 大学C组 第十届蓝桥杯 2019年国赛真题
- 南昌抚州医学院官网 南昌大学抚州医学院官方网站
- 北华大学计算机学院2020校历,北华大学2020年什么时候放寒假
- vs乱码怎么办_突击复习VS早早睡觉
- THUPC 清华大学学生程序设计竞赛暨高校邀请赛2023 - 初赛(待补题)
- html网页制作代码大全——大学生影视主题网页制作——图图影视影院5页HTML+
- 中国石油大学胜利学院学费 中国石油大学胜利学院2021招生简章