А вы знаете стандартные структуры и алгоритмы?

Приветствую тостеро-сообщество!
Собственно, сабж! Во многих вакансиях умные( я на это надеюсь ) люди пишут, что соискатель должен знать стандартные алгоритмы и структуры данных. Вот у меня возник вопрос: А вы знаете стандартные структуры данных и алгоритмы?
А используете в своей работе? Когда вы последний раз писали самостоятельно сортировку? Хотя бы пузырьком :)
А какой-нибудь алгоритм?
А пишете на чем?
  • Вопрос задан
  • 6591 просмотр
Пригласить эксперта
Ответы на вопрос 7
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
пузырек не напишет только тот, кто не знает что это такое. Ну и да, нужно знать примерно как они работают и сложность различных алгоритмов для различных случаев что бы писать более эффективный код.

Вообще все упирается в знание сложности алгоритмов, из этого вытекает что вы должны знать хотя бы примерно как эти алгоритмы работают. Скажем вы должны знать что при таком-то случае, с которым у вас чаще сталкивается программа, алгоритм А имеет сложность O(N) а другой при таком же случае всего то O(logN).... при том что в большинстве других задач тот же самый алгоритм A c определенными допущениями может иметь сложность O(1).

Алгоритмы базовые обычно связаны со структурами данных (вставка/выборка из хэш таблицы, вставка/выборка в деревья и т.д.) На алгоритмах сортировки просто удобнее объяснять все это дело и учить людей разрабатывать алгоритмы, определять их сложность и т.д.

Сейчас вот собираюсь перечитать Кромена, "Алгоритмы: построение и анализ". Ибо поймал себя на мысли что я уже плохо помню все это дело.
Ответ написан
Допустим, что знаю.

Здесь фишка в другом - мало того, что надо знать алгоритмы, надо ещё их применять. То есть не важно количество умных книг, которые вы прочли. Важно, как часто вы их применяете и смотрите другие решения - опыт использования.

Звучит немного бредово, но нужно добиваться понимания необходимости применения того или иного алгоритма на интуитивном уровне, понимать все его нюансы. А это достигается только работой над различными задачами.
Ответ написан
Комментировать
begemot_sun
@begemot_sun
Программист в душе.
> А вы знаете стандартные структуры данных и алгоритмы?
Нет, не знаю я стандартных структур и алгоритмов, потому что:
1. Стандарта такого нет
2. Для каждого человека стандарты свои.
Поэтому:
1. Элементарное знаю.
2. Если нужно что-то забубенное (а такое нужное редко), то приходится лезть в Гугл.
Ответ написан
@Shetani
Все знать невозможно, да и не нужно. Лучше знать где можно найти нужную информацию.
Ответ написан
Комментировать
@mpavlov
Не знаю никаких стандартных структур и алгоритмов, и не считаю, что должен их знать. Для программиста важно уметь анализировать, искать решения, использовать собственный опыт и опыт коллег, и выбирать наиболее оптимальный вариант исходя из вышеперечисленного.

Пишу на C# под Web.
Ответ написан
@andymitrich
Software Developer
Знаю и использую.
Ответ написан
Комментировать
Mrrl
@Mrrl
Заводчик кардиганов
Некоторые стандартные структуры и алгоритмы знаю. Но в работе использую редко: обычно ситуации возникают такие, что непосредственное применение стандартного алгоритма будет не очень эффективным (или по какой-то причине вообще не подойдёт), так что приходится строить более специальные структуры и алгоритмы - обычно как комбинацию стандартных приёмов, но не обязательно.
Из стандартных приходилось писать, разве что, приоритетную очередь: почему-то в C# её не сделали. И QR-алгоритм для собственных значений матрицы (про мелочи типа многомерного метода Ньютона не говорю - они попадаются регулярно, и каждый раз со своими особенностями).
Сортировку в последний раз писал с полгода назад. Получился монстр на полтысячи строк, но он работал.
Сортировку пузырьком (или простыми вставками) приходится писать когда по какой-то причине неудобно вызывать стандартный Sort. Например, при сортировке фрагмента массива с нестандартной функцией сравнения - опять же, в C# этот метод не вывели. Там проще написать три строчки в коде, чем оформлять класс-компаратор.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы