の計算私は、次のC++の関数のためのビッグ-Oランタイムを計算すると、いくつかの指針を緊急に必要としてよ:ビッグ-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;
}
これはまだ私には新しい概念であるので、私は持っていますそれを正しいものにするのに少し問題があります。私は、少なくとも2つの操作が1回起こると仮定しています(auto it = poly_.begin、そして最後にrcを返します)が、whileループを使って操作数を数える方法がわかりません。私の教授によると、正しいランタイムはO(n)ではありません。もし誰かが何か指導をしてもらえれば、大いに感謝します。私はこの質問に答える方法を理解したいが、私はこの機能のようなものをオンラインで見つけることができなかったので、ここにいる。ありがとうございました。
ループ内にループがあります。それはあなたに何を示唆していますか? – PaulMcKenzie
より簡単な問題を解決してみてください。たとえば、実行時に内部のforループがないとすると、どうなりますか? –