- return aDist < bDist;
+ return aDist - bDist;
aDist < bDist
всегда будет либо true, либо false, что в данном контексте будет трактоваться как 1 и 0, т.е. aDist всегда больше или равен bDist и никогда не меньше него. Из-за разных используемых алгоритмов сортировки, разные движки сходят с ума по разному.