1
resposta

Ordenando listas

string[] nomes = { "Fernanda", "Ed", "Gus", "Alice", "Bruno", "Daniel" };
Array.Sort(nomes);

foreach (var nome in nomes) {
    Console.WriteLine(nome);
}
Console.WriteLine($"\n{nomes[2]} foi convocada para uma cerimônia especial.");
1 resposta

Olá, Diego. Como vai?

Parabéns por mais uma resolução! O uso do método estático Array.Sort() é a maneira mais clássica e eficiente no C# para ordenar os elementos de um array unidimensional.

Quando aplicamos o Array.Sort() em um array de strings, por padrão, o .NET organiza os elementos em ordem alfabética crescente. É muito importante notar que esse método altera o array original diretamente na memória (uma operação conhecida como ordenação in-place).

Fazendo o mapeamento do seu código, após a execução de Array.Sort(nomes), a estrutura do seu array passa a ser:

  • Posição [0]: "Alice"
  • Posição [1]: "Bruno"
  • Posição [2]: "Daniel"
  • Posição [3]: "Ed"
  • Posição [4]: "Fernanda"
  • Posição [5]: "Gus"

Portanto, a saída final do seu console no último WriteLine será:
Daniel foi convocada para uma cerimônia especial.

(Como uma pequena observação de contexto: se "Daniel" for um nome masculino, a frase impressa ficará com uma pequena divergência de gênero ("Daniel foi convocada"). Se a intenção era selecionar uma pessoa do gênero feminino, você pode ajustar o índice ou os nomes do array para que a concordância fique perfeita!).

Para complementar os seus estudos sobre ordenação de coleções no C#, gostaria de compartilhar duas excelentes alternativas muito utilizadas no mercado:

1. Ordenação Inversa (Ordem Alfabética Decrescente)
Se em algum momento você precisar ordenar o seu array de trás para frente (Z para A), o C# oferece o método Array.Reverse(). Para utilizá-lo, você deve primeiro ordenar normalmente e depois inverter:

string[] nomes = { "Fernanda", "Ed", "Gus", "Alice", "Bruno", "Daniel" };

Array.Sort(nomes);    // Organiza de A-Z
Array.Reverse(nomes); // Inverte para Z-A

// Agora o nomes[0] seria "Gus", nomes[1] seria "Fernanda", etc.

2. Ordenação sem modificar o Array Original (Usando LINQ)
Há cenários no dia a dia onde você precisa exibir os nomes ordenados, mas não pode alterar a ordem original do array porque o índice antigo importa para outra parte do sistema. Para isso, usamos o método de extensão OrderBy do LINQ:

using System.Linq;

string[] nomes = { "Fernanda", "Ed", "Gus", "Alice", "Bruno", "Daniel" };

// Cria uma nova sequência ordenada sem mexer no array original
var nomesOrdenados = nomes.OrderBy(n => n);

foreach (var nome in nomesOrdenados) {
    Console.WriteLine(nome);
}

// O array 'nomes' original continua intacto! 
// nomes[2] ainda será "Gus", pois a ordem inicial foi preservada.

Dominar essas diferentes formas de manipulação te dá total controle sobre como gerenciar e apresentar fluxos de dados nos seus projetos.

Espero que possa ter lhe ajudado!