Да, pessimisti c сложность этого алгоритма O(n^2)
, optimisti c is O(n)
.
Optimisti c
Первый / последний элемент - самый большой . В этом случае будет выполнен только один проход (либо l oop), поэтому каждый элемент будет посещен только один раз.
Pessimisti c
Средний элемент является самым большим. В таком случае внешний l oop будет выполняться n/2
раз, а внутренний l oop n/2
раз, пока половина массива не будет достигнута внешним l oop.
Это дает нам 1/2 * n * 1/2 * n
, что равно O(n^2)
, поскольку константа не имеет значения.
Это также ваше среднее значение, поскольку у нас нет никаких предположений относительно ваших данных, которые будут использоваться здесь.
Решение O (n)
Go с любого конца массива и сохраните максимальное видимое значение и переключитесь, если будет найдено большее значение. Вернуть самый большой после посещения всех элементов.