Java

Должен ли начинающий программист понимать все алгоритмы сразу ?

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

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

А все алгоритмы знать в принципе невозможно: посмотри, сколько уже томов и дополнительных выпусков в "Искусстве программирования" Кнута - это всё описания алгоритмов.
Николай Бердников
Николай Бердников
65 485
Лучший ответ
Я не начинающий, но не знаю про Хоара :) Я пишу на PHP, так что просто делаю sort(). На JS аналогично. У меня не бывает задач на сортировку миллионов элементов, где нужно было бы повышать эффективность за счёт самописных алгоритмов.
Сергей Морозов
Сергей Морозов
81 535
лучший способ понять алгоритм сортировки - попробовать выполнить сортировку самому.
обычно я три раза делил тетрадный лист пополам, получал 8 маленьких листочков и соответственно их нумеровал.
произвольно перемешав пытался применять шаги алгоритма, пока не получал 1, 2, 3, 4, 5, 6, 7, 8.

в сети много пошаговых описаний для самых различных алгоритмов сортировок.
Хоара
http://www.firststeps.ru/theory/knut/r.php?7
Шелла
http://www.firststeps.ru/theory/knut/r.php?5
Когда понадобится тогда и чухайся (последний раз трогал сортировку три года назад когда хадуп кластер пердолил). Нечего голову малонужной информацией забивать.
Кодер - тот который по алгоритму, по четкому заданию пишет (кодирует) программу, а вот программист - это тот который придумывает, базируясь на своих (чужих) знаниях, максимально эффективный код программы. Короче есть художник, есть ксерокс.