数据结构方面时间复杂度~空间复杂度
2012-08-30 10:00
211 查看
最近学习数据结构,下面通过一个题目谈谈感想吧:
关于这个挺水的题目,咱们先用基本的递推来做一下:
上面代码没什么好说的,时间复杂度是O(n^2),空间复杂度是O(n)。
效率比较低,下面考虑提升算法的效率,对x^n不必每次都乘一遍,可以用一个数组b
进行保存,因此,得到下面的代码:
上面的算法效率高了挺多,时间复杂度O(n),由于增加了数组,空间复杂度O(2n)。
下面尝试能否减小空间复杂度,降为O(n),实际证明,是可以的。再次之前,要对原式进行变形:
因此,用C++实现:
上面的时间复杂度是O(n),空间复杂度是O(n)
机器重新装了系统,mathtype没有了,word也没用装,就是用WPS先排的公式,比较丑。。。。等凡仔回来了装一下OFFICE。。到时候重新排版一下公式。
关于这个挺水的题目,咱们先用基本的递推来做一下:
#include<iostream> #include<fstream> using namespace std; int main() { fstream cin("1.txt"); int n,sum; double t,x; double a[110]; while(cin>>n>>x) { for(int i=0;i<n;i++) { cin>>a[i]; } sum=a[0]; for(int i=0;i<n;i++) { t=a[i]; for(int j=0;j<i;j++) { t*=x; } sum+=t; } cout<<sum<<endl; } system("pause"); return 0; }
上面代码没什么好说的,时间复杂度是O(n^2),空间复杂度是O(n)。
效率比较低,下面考虑提升算法的效率,对x^n不必每次都乘一遍,可以用一个数组b
进行保存,因此,得到下面的代码:
#include<iostream> #include<fstream> using namespace std; int main() { fstream cin("1.txt"); int n; double t,x,sum; double a[110],b[110]; while(cin>>n>>x) { b[0]=1; sum=0; for(int i=0;i<n;i++) { cin>>a[i]; } for(int i=1;i<n;i++) { b[i]=b[i-1]*x; } for(int i=0;i<n;i++) { sum+=a[i]*b[i]; } cout<<sum<<endl; } system("pause"); return 0; }
上面的算法效率高了挺多,时间复杂度O(n),由于增加了数组,空间复杂度O(2n)。
下面尝试能否减小空间复杂度,降为O(n),实际证明,是可以的。再次之前,要对原式进行变形:
因此,用C++实现:
#include<iostream> #include<fstream> using namespace std; int main() { fstream cin("1.txt"); int n; double sum,t,x; double a[110],b[110]; while(cin>>n>>x) { for(int i=0;i<n;i++) { cin>>a[i]; } sum=a[n-1]; for(int i=n-2;i>=0;i--) { sum=sum*x+a[i]; } cout<<sum<<endl; } system("pause"); return 0; }
上面的时间复杂度是O(n),空间复杂度是O(n)
机器重新装了系统,mathtype没有了,word也没用装,就是用WPS先排的公式,比较丑。。。。等凡仔回来了装一下OFFICE。。到时候重新排版一下公式。
相关文章推荐
- 时间复杂度、空间复杂度
- 设计一种数据结构,使得取中位数的时间复杂度在 O(1)
- 数据结构面试之十二——排序3(排序算法归类、排序时间、空间复杂度、稳定性总结)
- 时间复杂度与空间复杂度
- 【算法数据结构Java实现】递归的简单剖析及时间复杂度计算
- 算法分析之时间复杂度与空间复杂度
- 一个数组,有一个数出现3次,其余出现2次,求出现3次的数,要求时间复杂度<nlogn,空间复杂度O(1)
- [算法] 使用“复杂”的数据结构降低时间复杂度
- 性能-时间复杂度与空间复杂度(一)
- 数据结构-时间,空间复杂度
- 时间复杂度与空间复杂度
- 时间复杂度与空间复杂度
- 常用数据结构的时间复杂度
- 面试题:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素,要求函数min,push及pop的时间复杂度都是O(1)
- 《数据结构》2.10设计一个算法,删除顺序表中值为item的元素,要求算法的时间复杂度是O(n),空间复杂度是O(1)
- 数据结构和算法-时间复杂度和空间复杂度
- 位运算、时间复杂度、空间复杂度
- 时间复杂度,空间复杂度
- 数据结构::递归时间复杂度的计算
- 数据结构排序问题---堆排序及各种排序时间空间复杂度