Общая сортировка по номеру или алфавиту в порядке возрастания или убывания - PullRequest
0 голосов
/ 24 февраля 2019

Как мне отсортировать общий массив, который может содержать только алфавит или цифры?

Допустим, у меня есть общий список массива, который содержит только цифры и может быть легко отсортированиспользование

 public void sortAsc(ref T[] obj)

   {
      do
            {
                didSwap = false;
                for (int i = 0; i < obj.Length - 1; i++)
                {
                    if (Convert.ToInt32(obj[i]) < Convert.ToInt32(obj[i + 1]))
                    {
                        T temp = obj[i + 1];
                        obj[i + 1] = obj[i];
                        obj[i] = temp;
                        didSwap = true;
                    }
                }
            } while (didSwap);

   }

, но если массив содержит строку имен, и мы хотим отсортировать таким же образом, произойдет сбой.

из-за этого

, если(Convert.ToInt32 (obj [i])

Пожалуйста, дайте мне знать, если есть универсальный метод для этого, или мне придется отделитьлогика для каждого.

1 Ответ

0 голосов
/ 24 февраля 2019

Взгляните на метод List<T>.Sort(), так как он будет делать то, что вам нужно.

Это решит вашу проблему необходимости использовать Convert.ToInt32, потому что по умолчанию он будет использоватьIComparer реализация фактического используемого класса, который уже есть у вас int и string.

Так для строк:

var list = new List<string> { "dd", "aa", "ss" };
list.Sort();

//Output: list = ["aa", "dd", "ss"]

Или для целых чисел:

var list = new List<int> { 1, 13, 5 };

list.Sort();

//Output: list = [1, 5, 13]

Если вы хотите работать с пользовательскими классами, просто сделайте так, чтобы ваш класс реализовал IComparable, или вызвав вызывающего на Sort(), предоставить делегат функции для использования.Для получения более подробной информации см. Первую ссылку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...