Big O表記を使用して、forループの複雑さを理解しようとしています。私は以前に他のクラスでこれを行いましたが、これは実際のアルゴリズムに基づいているため、他のクラスよりも厳密です。コードは次のとおりです。
for(cnt = 0, i=1; i<=n; i++) //for any size n
{
for(j = 1; j <= i; j++)
{
cnt++;
}
}
と
for(cnt = 0, i=1; i<=n; i*=2) //for any size n
{
for(j = 1; j <= i; j++)
{
cnt++;
}
}
最初のループはリストをn回通過するため、O(n)の複雑さであることがわかりました。2番目のループに関しては、私は少し迷っています。テストされるnごとにi回ループを通過していると思います。私は(誤って)これは、ループが評価されるたびにループがO(n * i)であることを意味すると想定しました。私の仮定に欠けているものはありますか?cnt++は定数時間であることを私は知っています。
分析にご協力いただきありがとうございます。各ループは独自のスペースにあり、一緒ではありません。