Мне нужно рассчитать сложность времени для функции. Функция выглядит следующим образом:
1. scanf(“%d”,&n);
2. printf(“Enter element for an array”);
3. for(i=0;i<n;i++){
4. scanf(“%d”,&a[i]);
5. }
Числа (1, 2, 3, 4, 5) являются числами для строк кода. Итак, сначала я бы хотел вычислить функцию времени (f (n)) для функции, например, 5n + 1.
Итак, первая строка кода занимает время «1», вторая тоже » 1" . Так что до сих пор f (n) выглядит так: f (n) = 2
Для for l oop мне нужно время "n", потому что, если, например, n равно 10, и я начинаю i в 0, это будет повторяться 10 раз, поэтому n раз (i: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9), то же самое происходит с 5-м линии, потому что она в течение l oop, так что это будет все еще "n" время, но в ходе, который я следую, он говорит, что для l oop требуется "n" время и 4-я строка (scanf ("% d", & a [i])) занимает n-1 время, которое я не совсем понимаю, почему n - 1? Я думал, что в итоге f (n) будет выглядеть так: f (n) = 1 + 1 + n + n = 2n + 2, но говорят, что это f (n) = 1 + 1 + n + (n - 1) = 2n + 1. Итак, вопрос в том, зачем 4-й строке кода нужно n-1 времени, а не n , как для l oop?
И я подумал, что мы бы сказали, что для 4-й строки требуется также "1 «время, умноженное на for для l oop, которое занимает« n »время, поэтому f (n) будет выглядеть так: f (n) = 1 + 1 + n * 1 = n + 2