Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Ordenação Manual de Arrays | Array Manipulation and Sorting
Arrays em C#

Ordenação Manual de Arrays

Deslize para mostrar o menu

A ordenação é uma operação fundamental em programação porque ajuda a organizar dados para tornar a busca, análise e apresentação de informações mais eficientes. Embora o C# ofereça métodos integrados para ordenar arrays, compreender como os algoritmos de ordenação funcionam proporciona uma visão valiosa sobre pensamento algorítmico e resolução de problemas. Algoritmos de ordenação manual, como o selection sort, permitem observar como os elementos são comparados e movidos, passo a passo, até alcançar um array ordenado. Esse entendimento é essencial em situações que exigem lógica de ordenação personalizada ou em ambientes com suporte limitado a bibliotecas.

Note
Definição

O selection sort é um algoritmo de ordenação simples que seleciona repetidamente o menor (para ordem crescente) ou o maior (para ordem decrescente) elemento da parte não ordenada do array e o move para sua posição correta na parte ordenada.

Program.cs

Program.cs

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
using System; namespace ConsoleApp { public class Program { public static void Main(string[] args) { int[] numbers = { 5, 2, 9, 1, 5, 6 }; Console.WriteLine("Original array:"); PrintArray(numbers); SelectionSortAscending(numbers); Console.WriteLine("Sorted array (ascending):"); PrintArray(numbers); } public static void SelectionSortAscending(int[] array) { int n = array.Length; for (int i = 0; i < n - 1; i++) { int minIndex = i; for (int j = i + 1; j < n; j++) { if (array[j] < array[minIndex]) { minIndex = j; } } int temp = array[i]; array[i] = array[minIndex]; array[minIndex] = temp; } } public static void PrintArray(int[] array) { foreach (int num in array) { Console.Write(num + " "); } Console.WriteLine(); } } }

A ordenação por seleção funciona dividindo o array em uma parte ordenada e uma parte não ordenada. A cada etapa, seleciona o menor elemento da parte não ordenada e o troca com o primeiro elemento não ordenado, aumentando assim a parte ordenada em um elemento.

No código acima, inicia-se percorrendo cada elemento do array, exceto o último. Para cada posição i, busca-se o menor valor no restante do array (de i + 1 até o final). Quando um elemento menor é encontrado, minIndex é atualizado. Após o loop interno, o elemento na posição i é trocado com o elemento em minIndex, garantindo que o menor valor fique na posição atual. Esse processo se repete até que todo o array esteja ordenado em ordem crescente.

Program.cs

Program.cs

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
using System; namespace ConsoleApp { public class Program { public static void Main(string[] args) { int[] numbers = { 3, 8, 4, 7, 2, 9 }; Console.WriteLine("Original array:"); PrintArray(numbers); SelectionSortDescending(numbers); Console.WriteLine("Sorted array (descending):"); PrintArray(numbers); } public static void SelectionSortDescending(int[] array) { int n = array.Length; for (int i = 0; i < n - 1; i++) { int maxIndex = i; for (int j = i + 1; j < n; j++) { if (array[j] > array[maxIndex]) { maxIndex = j; } } int temp = array[i]; array[i] = array[maxIndex]; array[maxIndex] = temp; } } public static void PrintArray(int[] array) { foreach (int num in array) { Console.Write(num + " "); } Console.WriteLine(); } } }

O código define uma classe Program com um método Main que demonstra como ordenar um array de inteiros em ordem decrescente utilizando o selection sort. Inicialmente, o array numbers é criado e seus conteúdos originais são exibidos. Em seguida, o método SelectionSortDescending é chamado para ordenar o array do maior para o menor. Esse método funciona buscando repetidamente o maior valor na parte não ordenada do array e trocando-o com o primeiro elemento não ordenado. Após a ordenação, o programa exibe o array atualizado, mostrando os elementos organizados em ordem decrescente.

1. Qual é a complexidade de tempo do selection sort?

2. Como o selection sort difere do bubble sort?

3. Por que você pode implementar a ordenação manualmente em vez de usar métodos internos?

question mark

Qual é a complexidade de tempo do selection sort?

Selecione a resposta correta

question mark

Como o selection sort difere do bubble sort?

Selecione a resposta correta

question mark

Por que você pode implementar a ordenação manualmente em vez de usar métodos internos?

Selecione a resposta correta

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 3

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Seção 3. Capítulo 3
some-alt