Как отсортировать в алфавитном порядке List <char []> в C #? - PullRequest
0 голосов
/ 17 мая 2018

У меня есть список строк, и я сортировал их, используя:

if (SortedList[x].str[p].CompareTo(SortedList[x + 1].str[p]) > 0) //Sort the list
{
    Data aux = SortedList[x];
    SortedList[x] = SortedList[x + 1];
    SortedList[x + 1] = aux;
 }

str - это список строк, но мне пришлось преобразовать этот список в List<char[]>, и теперь я не могу использовать метод str.CompareTo(), потому что это только для строк ...

Я думал о создании списка строк, преобразующего char[] в string и сортировке его с помощью метода CompareTo(), который я использовал, а затем просто о создании другого List<char[]> путем преобразования списка отсортированных строк.

Есть ли более эффективный способ сортировки List<char[]>?

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Почему бы просто не использовать сортировку?Как упоминалось Aominè

// Declare Sentence Variable
string sentence = "The quick brown fox jumps over the lazy dog";
// Initialize New List of type char
List<char> charList = new List<char>();
// Remove Spaces and Lowercase all Letters and Add to List
charList.AddRange(sentence.Replace(" ", string.Empty).ToLower());
// Sort List<char>()
charList.Sort();
// Output Statements
Console.WriteLine($"Before: {sentence}");
Console.WriteLine($"After: {new string(charList.ToArray())}");

Выход:

Before: The quick brown fox jumps over the lazy dog
After: abcdeeefghhijklmnoooopqrrsttuuvwxyz
0 голосов
/ 17 мая 2018

Вы пытались использовать LINQ?

using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
    public static void Main()
    {
        var charList = new List<char[]>();

        // Initialize list of char array
        char[] array1 = { 's', 'a', 'm' };
        char[] array2 = { 's', 'm', 'i', 't', 'h' };
        char[] array3 = { 'c', 'o', 'o', 'l'};

        // Add them
        charList.Add(array1);
        charList.Add(array2);
        charList.Add(array3);

        Console.WriteLine("--Before sorting--");
        foreach (char[] item in charList) {
            Console.WriteLine(item);
        }

        // Sorting
        charList = charList.OrderBy(a => new string(a)).ToList();


        Console.WriteLine("--After sorting--");
        foreach (char[] item in charList) {
            Console.WriteLine(item);
        }
    }
}

Вывод:

--Before sorting--
sam
smith
cool
--After sorting--
cool
sam
smith

Тест здесь: https://dotnetfiddle.net/wcYSAE

Редактировать: Хотя я не ясно, основанныйна ваш вопрос, обычно, когда мне приходится сортировать List, я предпочитаю использовать то, что предлагает C #, вместо того, чтобы заново изобретать колесо.Что касается производительности, другие гуру C # могут ответить на это за нас.

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