Swift Interview - Вопросы для собеседований. Mobile митапы и конференции.
161 subscribers
9 photos
28 links
При интервью кандидаты часто сталкиваются с вопросами, которые не встречали или разбирали поверхностно. Это касается как и сложных, так и простых тем. На канале вопросы будут систематизироваться по сложности и темам
Download Telegram
​​Начальный уровень. Алгоритмы.

Алгоритмическая сложность. Аннотация Big O.

Алоха друзья! Этим постом мы открываем важную тему в программировании «Алгоритмы» и целую область вопросов, попадающихся на собеседовании. 

Каждому, даже начинающему программисту необходимо знать аннотацию Big O, какая алгоритмическая сложность у цикла, вложенного цикла, вставки в массив, в множество, пузырьковая сортировка и т.п. Все это поможет делать ваш код более оптимальным и избегать затратных алгоритмов. Начнём пока с самых азов, знания которых как правило достаточно для джунов, в следующих постах мы углубимся в тему.

Сложность алгоритма - это количественная характеристика, которая говорит о том, сколько времени, либо какой объём памяти потребуется для выполнения алгоритма.

Big O показывает то, как сложность алгоритма растёт с увеличением входных данных. При этом она всегда показывает худший вариант развития событий - верхнюю границу.

Распространённые сложности алгоритмов:

• O(1) - константная
• O(n) - линейная
• O(log n) - логарифмическая
• O(n * log n) - линеарифметическая или линеаризованная
• O(n2), O(n^2) - квадратичная

Наглядно зависимость времени обработки от входящих данных для различных алгоритмов можете увидеть в прикреплённом графике. На нем, например, видно как сильно отличаются графики для простого цикла (линейная сложность) и вложенного (квадратичная). Более подробно с примерами в статье 👇👇👇

#SwiftInterviewBeginner
#SwiftInterviewAlgorithms

https://bimlibik.github.io/posts/complexity-of-algorithms/
👍9