Время, сложность, алгоритмы – в чём тут связь?



Временная сложность алгоритма – это время, затрачиваемое алгоритмом на выполнение, в зависимости от размера входных данных.



На картинке представлены основные временные сложности. На ней можно уловить зависимость между размером входных данных (n) и количеством выполненных операций (#) по времени. Это соотношение обозначается как порядок возрастания временной сложности и задается как O(n), где O - порядок возрастания, а n - размер входных данных. O(n) часто называют как «O-большое».



Начиная от O(n^2) алгоритмы считаются неэффективными. Они будут работать крайне медленно даже для небольших n. Так что если ваш алгоритм имеет такую сложность – возможно стоит задуматься над его оптимизацией.



Но не все задачи имеют оптимальные решения с хорошей временной сложностью. Поэтому порой приходится довольствоваться существующими неоптимальными практиками, которые признаны лучшими для рассматриваемого класса задач.



Понимание временной сложности алгоритма позволяет выбирать наиболее подходящие алгоритмы и структуры данных для решения конкретной задачи, а также оптимизировать свои решения по необходимости.



Хотите, чтобы я поделился простой интуицией для определения временной сложности? Тогда поддержите этот пост китом 🐳.



Учитываете ли вы временную сложность алгоритма при написании кода?