Если вас интересуют именно сортировки, то я зык не важен, надо изучать алгоритмы.
www.ozon.ru/context/detail/id/6290126 - одна из лучших книг для начала, на мой взгляд. Гораздо меньше и проще Кнута, или Кормена. Ну и советов с книгами по алгоритмам на Тостере хватает.
Ну и надо отличать сортировки и обходы. Методы типа map и reduce вызывают некоторую функцию для каждого элемента массива. Они просто проходят по нему, без сравнений.
sort - сортирует массив, тоесть сравнивает элементы между собой и переставляет. Сложность такого алгоритма обычно гораздо выше, чем при простом проходе, а сравнение можно проводить различными способами, и это можно регулировать, передавая функцию сравнения arr.sort(function). Но эта функция будет только менять принцип сравнения двух элементов массива, а не алгоритм сортировки, который отвечает за порядок сравнения и перестановки. Передавая кастомную функцию, мы можем, к примеру отсортировать числа по алфавиту, или в обратном порядке, при помощи того же самого алгоритма сортировки.
Ну а если надо реализовывать свой алгоритм, то надо писать свой метод сортировки =)