C++算法:如何提高此代码的效率?[大O]
C++ Algorithm: How can I improve efficiency of this code? [Big-O]
我怎样才能重新编写下面的代码,以提高他的效率?
Fraction Polynomial::solve(const Fraction& x) const
{
Fraction rc;
auto it = poly_.begin();
while (it != poly_.end())
{
Term t = *it;
//find x^exp
Fraction curr(1, 1);
for (int i = 0; i < t.exponent_; i++)
{
curr = curr * x;
}
rc += t.coefficient_ * curr;
it++;
}
return rc;
}
此代码的当前 Big-O 表示法是什么?[我认为是O(N^2)]
我将引用数字食谱,第5章,因为它很有趣:
我们假设你知道的足够多,永远不会计算多项式 道路:
p=c[0]+c[1]*x + c[2]*x*x +c[3]*x*x*x + c[4]*x*x*x*x;
或者(甚至更糟!
p=c[0]+c[1]*x+c[2]*pow(x,2.0)+c[3]*pow(x,3.0)+c[4]*pow(x,4.0);
来 (计算机)革命,所有被判犯有此类罪行的人 行为将被立即执行,而他们的程序不会被执行!它 然而,是否写作是一个品味问题
p=c[0]+x*(c[1]+x*(c[2]+x*(c[3]+x*c[4])));
或
p=(((c[4]*x+c[3])*x+c[2])*x+c[1])*x+c[0];
。
至少这会从O(m*n)
实现中删除m
(其中m
是指数,n
多项式阶)。
相关文章:
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 代码在main()中运行,但在函数中出现错误
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 编译包含字符串的代码时遇到问题
- 我在c++代码中生成了一个运行时#3异常
- 为什么当我解模块化时,这个C++代代码"效率较低"?
- 代码的效率. 转到和函数调用
- 如何衡量代码更改的功率效率提高或减少
- 代码比较:就效率而言,哪种代码更好用?
- C++算法:如何提高此代码的效率?[大O]
- C 模板可变代码效率
- 查找代码中的逻辑缺陷或低效率
- OpenMP for循环并行化:我的代码效率很低
- 如何提高c++代码的效率(找到最大的素数因子)
- 帮助改进代码,提高时间效率
- 如何利用模拟退火的概念来提高这个代码的排序效率
- 条件运算符会导致代码效率降低吗?
- 如何找到一个运行时效率的c++代码
- c++代码可以工作,但看起来效率很低
- 如何在涉及浮点运算的特定代码中优化和提高效率