Я пытаюсь найти время выполнения в каждой строке, когда произойдет наилучший и наихудший случай, а Big-O - в худшем и лучшем случае.
Код, который я вставил, находит самую длинную длину последовательности возрастающих чисел в массиве.
Например, если бы у нас было [4,5,6,9,1,2,3,4,5,6], самая длинная последовательность была бы 6.
будет первой дляцикл будет выполнен n раз?
будет ли второй цикл for выполняться n раз?
будет ли оператор if выполняться n раз?
Будет ли инструкция внутри if выполнена n раз?
Будет ли наилучший случай, когда массив находится в порядке возрастания, а худший - когда массив находится в порядке убывания?
Причина, по которой я не верю, что это правда, заключается в том, что при сортировке в порядке возрастания второй цикл будет проходить до конца. При сортировке в порядке убывания второй цикл всегда прерывается, поскольку оператор and не выполняется.
for (i = 0, length = 1; i < n-1; i++) {
for (i1 = i2 = k = i; k < n-1 && a[k] < a[k+1]; k++, i2++);
if (length < i2 - i1 + 1)
length = i2 - i1 + 1;
}
return length;