числа сортируются по числовому значению, а строки сортируются противоположным образом (т.е. "19999" < "2"
).
В частности, строки сравниваются символ за символом слева направо, пока один или другой символ не будут различаться, и в этот момент сравнение останавливается. Например, 19
и 121
будут сравниваться следующим образом:
"19"[0] != "121"[0] ? // no
"19"[1] != "121"[1] ? // yes
'9' > '2' ? // yes
return some value that indicates "19" greater than "121";
Для правильной сортировки вам необходимо преобразовать их в числовое значение, а затем отсортировать. Кроме этого, вы могли бы реализовать свой собственный алгоритм сортировки, который правильно читает числа.