Во втором случае еще проверяется на ноль (!a && !b). Если в массиве NaN или undefined может появиться, то лучше явно на ноль сравнивать a===0 && b===0. Потом единица делится на этот ноль, и в зависимости от его знака получится либо плюс бесконечность либо минус бесконечность, а они уже нормально сравниваются.
имей ввиду, сортировка слишком дорогая, если мало елементов, то ок, но если много, то нужно проходится по массиву только раз попутно присваивая минимальные значения