Вам не нужно знать как работает функция sort, вам нужно дать этой функции метод как "взвесить" любые два элемента списка, как оценить свойства или значение самого элемента, чтобы понять, какой из них должен идти впереди какого. Результат метода должен быть 1, 0 или -1.
Если 1, то A тяжелее B.
Если -1, то А легче B.
Если 0 - то элементы эквивалентны.
function(a,b)
{
if(/*условие на A тяжелее B*/) // чашка A ниже чашки B на рычажных весах
return 1;
else if(/*условие на A легче B*/) // чашка A выше чашки B на рычажных весах
return -1;
else
return 0; //иначе - эквиваленты, весы уравновешены
// если условия на тяжесть и легкость поменять местами, то поменяется направление сортировки
}