Существует много разных подходов к сортировке в зависимости от требуемых результатов, контекста или доступных инструментов.Так как у вас есть .NET, вы не ограничены технологией, но вашими требованиями.
Рассмотрите эти ситуации:
Культурно-специфические
'Array sorted by English culture
{"aa", "bb", "cc", "ch", "dd", "ee", "ff", "gg", "hh", "ii"}
'Same array sorted by Czech culture
{"aa", "bb", "cc", "dd", "ee", "ff", "gg", "hh", "ch", "ii"}
А слышали ли вы когда-нибудь об этом, о, о, о?:)
Куда ты их положил?До «е», после «е», после «z»?Это будет зависеть от вашей культуры и потребностей.
Специфичные для технологии
Допустим, у вас есть строка ANSI в массиве байтов.Сортировка по байтовому значению возвращает что-то другое, чем сортировка по позиции символа в алфавите.
Специфичные для пользователя потребности
Является ли "a" больше, чем "A"?Что вообще?Что в вашей конкретной необходимости?Каталог с именем «9» больше, чем каталог с именем «10»?Сортируйте его как строку, и вы получите {"10", "9"}, откройте его в проводнике и увидите {"9", "10}. Откройте его в Total Commander, и вы получите {"10 "," 9 "} снова для того же каталога.
Заключение
Вы должны определить, что вам действительно нужно в вашем конкретном случае. И найти правильный или простой способкак это сделать. В .NET ваши результаты будут зависеть от Threading.Thread.CurrentThread.CultureInfo
или от вашего собственного IComparer, который вы можете предоставить методу IList.Sort или конструкторам SortedList / SortedSet.
Risks
Вы должны знать о различной сортировке при различной информации о культуре. Например, создание и заполнение SortedList (Of String, Object) в культуре "hu-HU" в некоторых случаях вызовет странные исключения после чтения элементов в "cs-CZ"."культура, поскольку элементы не будут отсортированы должным образом, а дерево двоичного поиска будет сбито с толку.