前言:
目前兄弟们对“算法为什么难”可能比较注意,姐妹们都想要剖析一些“算法为什么难”的相关内容。那么小编在网上网罗了一些对于“算法为什么难””的相关文章,希望大家能喜欢,姐妹们快快来了解一下吧![玫瑰][玫瑰][玫瑰]春风拂面,我守候在此,我是行者
序言什么是算法
通俗意义来讲就是解决一个问题的方法,比如我去一个数据存储中查找一个数据,那我如何去找寻自己想要数据呢?算法的好坏 ,通常去看完成任务的耗时(通常用时间复杂度表示)
为什么学算法
作为java后端开发者,经常做一些功能性业务开发,感觉算法对我们的开发逻辑影响不大,真的是这样吗?你的感觉没有错,是因为开发中需要的工具类与方法都是已经封装好的,不需要你去实现过程,直接面向对象开发。比如你使用集合类,java都已经提供好的封装。有时,可能在你处理大量数据时或者底层开发,需要你自己去借用算法理论,去实现功能。
学习算法,能够提高功能执行效率,大规模计算,了解底层,我的感受是有助于提高自己编程思维逻辑感,比如让你实现一个业务逻辑时,你就会考虑很多边界问题,然后对业务逻辑健壮性处理。
数据结构与算法什么关系
数据结构顾名思义就是数据存储方式呗,数据怎么存储,是不是关系到算法的效率。所以它们俩的关系是相辅相成
菲波那契数列
示例:菲波那契数列 :0 1 1 2 3 5 8 …
通过数列总结规律:n=(n-1)+(n+2)
#include <iostream>#include <vector>int fibonacci(int n) { if (n <= 1) { return n; } std::vector<int> dp(n + 1); dp[0] = 0; dp[1] = 1; for (int i = 2; i <= n; i++) { dp[i] = dp[i - 1] + dp[i - 2]; } return dp[n];}int main() { int n = 10; // 求第 n 项 int result = fibonacci(n); std::cout << "第 " << n << " 项的菲波那契数列值为:" << result << std::endl; return 0;}
这个逻辑实现 -称为动态规划
总结
在这里只是介绍了算法运用,其实菲波那契数列也可以用递归算法实现,为什么选择用动态规划呢?通过用递归算法实现与动态规划算法实现对比,你能总结出动态规划的特点吗?
您对文章或者编程有什么建议、想法、问题,都可以评论区留言互动哦
每天不断更,精彩不停止,明天见,我是行者
记得留个关注哟,让我们一起去看星辰大海,品味代码人生