Допустим, у меня есть два кода:Confused о временной сложности вложенных циклов и ищет советы
Код A:
for i = 0;
for j = 0;
while(i<n){ // O(n)
while(j<n){ // O(n)
printf("hello");
.....
Время работы = о (п) х О (п) = O (N^2) ..
Код B:
int result = 0;
int i = 0;
while (i < n/2){ //O(n)
result += arr[i];
i += 1;
while(i >= n/2 && i < n){ //O(n)
results += arr[i];
i +=1;
}
Ru nning time = O (n)
Как сделать код B, мы НЕ МНОЖЕМ МНОЖЕСТВО O (n), чтобы получить O (n^2), как мы это делали для кода A? Очень путают, как определить время работы.
Предположим, что у вас было что-то вроде, но две петли были * не * вложенными, они побежали один за другим. Вы видите, почему это будет O (n)? – Beta
Да, но все они вложены. – Belphegor
Второй код должен быть вложен, не так ли? – Belphegor