У вас нет массива чисел, у вас есть массив строк. Таким образом, они сортируются по алфавиту.
Один из вариантов - использовать класс BigInteger
для хранения их в виде чисел:
BigInteger[] unsorted = {
BigInteger.Parse("1"),
BigInteger.Parse("2"),
BigInteger.Parse("100"),
BigInteger.Parse("12303479849857341718340192371"),
BigInteger.Parse("3084193741082937"),
BigInteger.Parse("3084193741082938"),
BigInteger.Parse("111"),
BigInteger.Parse("200")
};
В противном случае, если вы хотите сохранить их в виде строк, вы можете добавить их в нули с нулями, чтобы согласовать длины, чтобы сработала буквенно-цифровая сортировка:
string[] unsorted = {
"00000000000000000000000000001",
"00000000000000000000000000002",
"00000000000000000000000000100",
"12303479849857341718340192371",
"00000000000003084193741082937",
"00000000000003084193741082938",
"00000000000000000000000000111",
"00000000000000000000000000200"
};
Если вы выберете первое, просто измените типы в вашем блоке if
, чтобы они также были BigInteger
.