
Время, сложность, алгоритмы – в чём тут связь?
Временная сложность алгоритма – это время, затрачиваемое алгоритмом на выполнение, в зависимости от размера входных данных.
На картинке представлены основные временные сложности. На ней можно уловить зависимость между размером входных данных (n) и количеством выполненных операций (#) по времени. Это соотношение обозначается как порядок возрастания временной сложности и задается как O(n), где O - порядок возрастания, а n - размер входных данных. O(n) часто называют как «O-большое».
Начиная от O(n^2) алгоритмы считаются неэффективными. Они будут работать крайне медленно даже для небольших n. Так что если ваш алгоритм имеет такую сложность – возможно стоит задуматься над его оптимизацией.
Но не все задачи имеют оптимальные решения с хорошей временной сложностью. Поэтому порой приходится довольствоваться существующими неоптимальными практиками, которые признаны лучшими для рассматриваемого класса задач.
Понимание временной сложности алгоритма позволяет выбирать наиболее подходящие алгоритмы и структуры данных для решения конкретной задачи, а также оптимизировать свои решения по необходимости.
Хотите, чтобы я поделился простой интуицией для определения временной сложности? Тогда поддержите этот пост китом 🐳.
Учитываете ли вы временную сложность алгоритма при написании кода?
Временная сложность алгоритма – это время, затрачиваемое алгоритмом на выполнение, в зависимости от размера входных данных.
На картинке представлены основные временные сложности. На ней можно уловить зависимость между размером входных данных (n) и количеством выполненных операций (#) по времени. Это соотношение обозначается как порядок возрастания временной сложности и задается как O(n), где O - порядок возрастания, а n - размер входных данных. O(n) часто называют как «O-большое».
Начиная от O(n^2) алгоритмы считаются неэффективными. Они будут работать крайне медленно даже для небольших n. Так что если ваш алгоритм имеет такую сложность – возможно стоит задуматься над его оптимизацией.
Но не все задачи имеют оптимальные решения с хорошей временной сложностью. Поэтому порой приходится довольствоваться существующими неоптимальными практиками, которые признаны лучшими для рассматриваемого класса задач.
Понимание временной сложности алгоритма позволяет выбирать наиболее подходящие алгоритмы и структуры данных для решения конкретной задачи, а также оптимизировать свои решения по необходимости.
Хотите, чтобы я поделился простой интуицией для определения временной сложности? Тогда поддержите этот пост китом 🐳.
Учитываете ли вы временную сложность алгоритма при написании кода?