C で記述された 2 つのループがあり、最初の実行n
時間n
は入力文字列の長さです。入力文字列が*& 201 +ACD 3491 AASD 3
.
ループは各文字をスキャンし、数字が検出されると、数字の長さを計算し、その距離だけポインターをインクリメントします。したがって、ポインターが整数をp
指して読み取ると、数値 ( ) になり、3 ずつインクリメントされます。一方が実行時間で、もう一方が実行時間である 2 つのネストされたループの時間の複雑さはです。2
sscanf
201
p
N
M
O(N * M)
私のアルゴリズムの時間計算量も であると言っても過言ではありません。その特定の反復でスキャンされる桁数はO(N * M)
どこでしょうか? M
そうでない場合、全体の時間計算量はどのくらいになるでしょうか?
編集:
ここにいくつかのコードがあります
char c;
while ((c = fgets(fp)) != EOF) {
// scans characters, if a digit is encountered, get digit_length
for (int i = 0; i < digit_length; i++)
p++;
}