Как стать автором
Обновить

Комментарии 25

"Грокаем алгоритмы" прям получилось)))

Алгоритмы это различные подходы в решении задач, и нечто большее чем просто сортировка расческой (что является подмножеством основной идеи Divide and Conquer, он же разделяй и властвуй).
Многие задачи можно решить например по принципу написанному выше.
Так почему бы не пользоваться этим в задачках, которые казалось бы не имеют никакой связи с агоритмами.
Банально выполнить декомпозицию, разбить задачу на подзадачи и найти более простое решение, алгоритм? Конечно алгоритм!

Думаю каждому человеку пригодилось бы знать такие паттерны)
В целом думаю Научиться применять алгорится не менее важно, чем знать сами алгоритмы.

Согласен)

Вот именно с понятия "алгоритм" и стоило начинать автору статьи, а именно написать, что вкладывает в это понятие "алгоритм". Без этого может быть непонимание.
Например относительно понятия "программирование" сталкивался со следующим.
Я занимаюсь разработкой на 1С и пару раз мне говорили разработчики на других языках, что 1С - это не программирование. Как же не программирование, если я пишу текст программ (кодирую). И это при том, что начинал я знакомство с программированием на языке С в 1988 г., еще учась в школе, в универе был Паскаль.
А что же тогда есть программирование в их представлениях?

Согласен, с терминологией нужно всегда быть аккуратным)

Ну и еще из всего многообразия алгоритмов приведены только 2 алгоритма поиска.
Может стоило начать со списка хотя бы "обязательных" алгоритмов?
Хотя мне не знакомы и эти 2 алгоритма...
И что? Я теперь "не настоящий" разработчик? )))

Официального списка "обязательных" и "основных" алгоритмов и структур данных не существует) Разные разработчики вкладывают в это понятие разный смысл. Плюс еще зависит для чего вам их изучать. Просто для общего развития, чтобы пройти собес или написать свой собсвтенный алгоритм шифрования, если вы начинающий криптограф.

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

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

Не по теме, но все же, вот плагин для VSCode для удобного создания скриншотов кода.

Спасибо! Пригодится в работе)

Для удобного чтения и копирования, лучше всё-таки обходится без скриншотов кода :)

Принято! В следующих статьях скриншотов больше не будет)

Я бы оставил и скриншот. А ниже под сполером код уже текстом.

Спасибо, подумаем как лучше сделать в следующей статье)

Спасибо =)

Единственное что хотелось бы поправить, в алгоритме бинарного поиска:

Первый элемент я бы получал через деструктуризацию const [start, …rest] = arr;

А второй arr[arr.length -1].

Так как массив у нас не всегда представленного вида (от 1 до 10).

Отличная мысль!)

Первый элемент я бы получал через деструктуризацию const [start, …rest] = arr;

Вы серьезно предлагаете порождать ненужные объекты там, где легко можно обойтись без?

Более того, скорее всего вы не поняли сам алгоритм бинарного поиска, раз предлагаете таким образом читать значения массива. Единственный "читаемый" элемент массива - это текущая середина (arr[middle]), с ним мы сравниваем и рекурсивно сужаем локацию поиска до нужной части.

Кстати, хорошая идея. Когда дойдём до рекурсии, то перепишем наш бинарный поиск и реализуем его рекурсивно.

Через явную рекурсию не надо. Я употребил термин "рекурсия" в смысле самого подхода: что диапазон поиска сужается до того момента пока не найдем. Явная рекурсия лишь ухудшит "производительность", а ведь смысл бинарного поиска - улучшить время поиска.

Пишите новые статьи, не жалейте материала. Хоть материал и изъезженный, но сам стиль изложения тоже многое значит. Джунам будет полезно. Можно также акцентировать внимание и на особенностях javascript, чтобы любители не втыкали везде деструктуризацию, где не надо )))

Ок, принято)

Отличная статья, ждем продолжения про другие интересные и полезные алгоритмы.

Благодарю =)

Последовательная сложность бинарного поиска в худшем и среднем случаях равна O(log n)

Почeму именно log n , а не какая-то иная формула? Думаю, было бы ценно это указать

https://tproger.ru/articles/computational-complexity-explained/

"O(log n) — логарифмическая сложность

Простейший пример — бинарный поиск. Если массив отсортирован, мы можем проверить, есть ли в нём какое-то конкретное значение, методом деления пополам. Проверим средний элемент, если он больше искомого, то отбросим вторую половину массива — там его точно нет. Если же меньше, то наоборот — отбросим начальную половину. И так будем продолжать делить пополам, в итоге проверим log n элементов".


Также очень рекомендую к прочтению книгу "Грокаем алгоритмы", там как раз подробно автор рассказывает про оценку сложности алгоритмов простым языком)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий