コードの問題を理解していません。コードはランダムな値を作成するため、実行時の複雑さを判断できません。「+2」と「-1」のせいで、プログラムが終わらない可能性もあります。しかし、これはありそうになく可能性があるので、O(infinite) としか言いようがありません。
bigO 表記の通常のケース:
ループは 1 つだけです。
for(int k=0;k<n;++k) {}
n 回の繰り返しがあるため、これは O(n) になります。
連続する 2 つ以上のループ:
for(int k=0;k<n;++k) {}
for(int l=0;l<n;++l) {}
O(2*n)になりますが、bigOでは定数は関係ないのでO(n)です
もつれたループ:
for(int k=0;k<n;++k) {
for(int l=0;l<n;++l) {
}
}
はO(n²)、
for(int k=0;k<n;++k) {
for(int l=0;l<n;++l) {
for(int m=0;m<n;++m) {
}
}
}
は O(n³) など
そして、検索/比較アルゴリズムで遭遇する最も一般的な複雑さは次のとおりです。
for(int k=0;k<n;++k) {
for(int l=k;l<n;++l) {// note here: l=k instead of l=0
}
}
O(n*log(n)) です
詳細については、グーグルを使用してください。