Зачем учить алгоритмы сортировки, если есть уже готовые методы сортировки?
1) Для развития мышления. Работа с алгоритмами сортировок хороший практикум для развития навыков программирования. Плюс это удобно проверяется преподавателем, удобно давать обратную связь при обучении.
2) Чтобы потом вспомнить, что они бывают разные и найти и использовать готовое решение не первое попавшееся под руку, а учесть плюсы-минусы того или иного алгоритма и выбрать именно то, что лучше подходит под конкретную задачу.
За более чем 20 лет программирования, действительно, крайне редко сортировал сам, все больше использовал готовые алгоритмы.
Ничуть не жалею, что в свое время изучал алгоритмы сортировок. Это сильно расширяет профессиональный кругозор.
Скорее в учебных целях. Это хороший пример алгоритма, в котором нужно разобраться. На практике вы конечно не будете писать это сами. Ну и знать про разные методы полезно, так как они немного отличаются.
Кстати, линейная сложность это O(n). O(n^2) называют квадратичной.
Стандартные сортировки работают за O(n * log(n)). Но часто это оценка не точная а усредненная.
Есть сортировки которые могут работать с данными по кускам, не загружая все в память. 
Линейные сортировки бывают, но для этого нужно что-то дополнительно знать про данные. Например сортировка подсчетом хорошо работает на ограниченных наборах (например на массивах цифр 0-9).
Есть еще другие важные свойства типа стабильности. Это когда вы сортируете файлы сначала по дате а потом по типу и в итоге все файлы одного типа остаются упорядоченны по дате.