Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Ordinamento Manuale Degli Array | Manipolazione e Ordinamento degli Array
Array in C#

Ordinamento Manuale Degli Array

Scorri per mostrare il menu

L'ordinamento è un'operazione fondamentale nella programmazione perché consente di organizzare i dati per rendere più efficiente la ricerca, l'analisi e la presentazione delle informazioni. Sebbene C# offra metodi integrati per ordinare gli array, comprendere come funzionano gli algoritmi di ordinamento fornisce preziose conoscenze sul pensiero algoritmico e sulla risoluzione dei problemi. Gli algoritmi di ordinamento manuale, come il selection sort, permettono di osservare come gli elementi vengono confrontati e spostati, passo dopo passo, per ottenere un array ordinato. Questa comprensione è fondamentale in situazioni in cui è necessario applicare una logica di ordinamento personalizzata o si lavora in ambienti con supporto limitato alle librerie.

Note
Definizione

Il selection sort è un algoritmo di ordinamento semplice che seleziona ripetutamente l'elemento più piccolo (per l'ordinamento crescente) o più grande (per l'ordinamento decrescente) dalla parte non ordinata dell'array e lo sposta nella posizione corretta nella parte ordinata.

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(); } } }

L'ordinamento per selezione funziona dividendo l'array in una parte ordinata e una non ordinata. A ogni passaggio, seleziona l'elemento più piccolo dalla porzione non ordinata e lo scambia con il primo elemento non ordinato, facendo così crescere la parte ordinata di uno.

Nel codice sopra, si inizia scorrendo ogni elemento dell'array tranne l'ultimo. Per ogni posizione i, si cerca il valore più piccolo nel resto dell'array (da i + 1 fino alla fine). Quando si trova un elemento più piccolo, si aggiorna minIndex. Dopo il ciclo interno, si scambia l'elemento in posizione i con quello in minIndex, assicurando che il valore più piccolo sia posizionato nella posizione corrente. Questo processo si ripete fino a quando l'intero array non è ordinato in ordine 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(); } } }

Il codice definisce una classe Program con un metodo Main che mostra come ordinare un array di interi in ordine decrescente utilizzando il selection sort. Si inizia inizializzando l'array numbers e stampando il suo contenuto originale. Successivamente viene chiamato il metodo SelectionSortDescending per ordinare l'array dal più grande al più piccolo. Questo metodo funziona cercando ripetutamente il valore massimo nella parte non ordinata dell'array e scambiandolo con il primo elemento non ordinato. Dopo l'ordinamento, il programma stampa l'array aggiornato, mostrando gli elementi disposti in ordine decrescente.

1. Qual è la complessità temporale del selection sort?

2. In che cosa il selection sort differisce dal bubble sort?

3. Perché potresti implementare manualmente l'ordinamento invece di usare i metodi integrati?

question mark

Qual è la complessità temporale del selection sort?

Seleziona la risposta corretta

question mark

In che cosa il selection sort differisce dal bubble sort?

Seleziona la risposta corretta

question mark

Perché potresti implementare manualmente l'ordinamento invece di usare i metodi integrati?

Seleziona la risposta corretta

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 3

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Sezione 3. Capitolo 3
some-alt