Вы должны знать общие принципы, лежащие в основе этих алгоритмов, потому что они являются основами программирования, и это даст вам представление о том, где их следует использовать. Например, вы должны понимать быструю сортировку достаточно хорошо, чтобы понять, почему это может быть O (N ^ 2) в патологических случаях.
Тем не менее, абсолютно бессмысленно запоминать достаточно деталей, чтобы иметь возможность кодировать реализации этих алгоритмов с точки зрения качества производства с первой попытки. Для этого и нужны библиотеки. Например, если все, что вы помните, это каноническую трехстрочную версию быстрой сортировки, и вы не можете вспомнить, как реализовать такую, которая не может легко найти случаи и сортировки O (N ^ 2), то в этом нет ничего плохого с этим.