Метод - список одноразовых команд, служащих для длостижения цели. Метод, который всегда требует конечной серии операций,называется алгоритм.
Меньше операций == меньше вычислительной мощности . В случае с большинством алгоритмов, число операций быстро растет с увеличением обьема входный данных. Чтобы избежать непредвиденных сложностей, связанных с раздуваением задачи - нужно ввести временную сложность алгоритмов.
Временная сложность или T(n) - показывает количество операций, которые алгоритм выполняет при обработке входящих данных обьема n.
По факту T(n) - стоимость работы алгоритма. Ты заплатил и тебе вернули сдачу
Нотация O большое, форма записи используется для выражения доминантного члена функции - общепринятый способ выраежния временной сложноси
По факту O(n) - это заплатить без сдачи.
Омега (Ω ()) описывает нижнюю границу сложности.
По факту омега - ты подсчитал все до последней копейки.
Когда T(n) разные для каждого входного n, то мы прибегаем к случаям.
Случай:
-
Лучший - ситуация, когда для любых входящих данных установленного обьема требуется минимальное количество операций. Например,в сортировке это происходит когда данные уже упорядочены
-
Худший - когда для любых входящих данных данного обьема требуется максимальное количество операций. Во многих алгритмах сортировки такое встречается, когда данные передаются в обратном порядке.
-
Средний - среднее кол-во операций, например с алгоритмом сортировки это производное n элементов на вход.
Сортировка выбором, внешний цикл for обновляет текущую позицию, с которой ведется работа. Внутренний цикл for выбирает элемент, которые затем подставляется за место этой позиции
const selectionSort = (list: number[]): void => {
for(let current = 0, current < list.length - 1){
if (list[current] < list[smalles])
smallest = current;
// где-то там сверху должен быть smallest
for (let i = current + 1, current < list.length){
if (list[i] < list[smallest]){
smallest = i;
}
}
}
Рассмотрим худший слуай:
-
Внешний цикл совершит n-1 итераций и в каждой из них выполнит по две операции. 2(n-1)
-
Внутренний цикл выполнит n-1, n-2 и т.д. Просуммируем
n-1
∑i = ( (n-1) * n ) / 2 = (n^2 - n) / 2
i=1
В целом, T(n) в данном случае складывается из 2n-n внешнего цикла и n^2 внутреннего цикла
T(n) = n^2 + n -2