Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Informatica Merge sort, Appunti di Informatica

Merge sort è un algoritmo di ordinamento

Tipologia: Appunti

2023/2024

Caricato il 11/12/2024

nou-ni
nou-ni 🇮🇹

3 documenti

1 / 3

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Analisi e Implementazione del Merge Sort in C#
Introduzione
Il Merge Sort è un algoritmo di ordinamento basato sulla tecnica divide-et-impera. Funziona
dividendo ricorsivamente l'array in due metà, ordinando ciascuna metà e poi fondendole
insieme in modo ordinato. Questo documento fornisce un'implementazione del Merge Sort
in C# e un'analisi dettagliata della sua complessità.
Codice C# per Merge Sort
using System;
class MergeSortExample
{
// Metodo per il Merge Sort
public static void MergeSort(int[] array, int sinistra, int destra)
{
if (sinistra < destra)
{
// Trova il punto medio
int medio = sinistra + (destra - sinistra) / 2;
// Ordina la metà sinistra
MergeSort(array, sinistra, medio);
// Ordina la metà destra
MergeSort(array, medio + 1, destra);
// Unisci le due metà ordinate
Merge(array, sinistra, medio, destra);
}
}
// Metodo per unire due sottoarray ordinati
private static void Merge(int[] array, int sinistra, int medio, int destra)
{
// Dimensione dei due sottoarray
int n1 = medio - sinistra + 1;
int n2 = destra - medio;
// Array temporanei per sinistra e destra
int[] sinistraArray = new int[n1];
pf3

Anteprima parziale del testo

Scarica Informatica Merge sort e più Appunti in PDF di Informatica solo su Docsity!

Analisi e Implementazione del Merge Sort in C#

Introduzione

Il Merge Sort è un algoritmo di ordinamento basato sulla tecnica divide-et-impera. Funziona dividendo ricorsivamente l'array in due metà, ordinando ciascuna metà e poi fondendole insieme in modo ordinato. Questo documento fornisce un'implementazione del Merge Sort in C# e un'analisi dettagliata della sua complessità.

Codice C# per Merge Sort

using System; class MergeSortExample { // Metodo per il Merge Sort public static void MergeSort(int[] array, int sinistra, int destra) { if (sinistra < destra) { // Trova il punto medio int medio = sinistra + (destra - sinistra) / 2; // Ordina la metà sinistra MergeSort(array, sinistra, medio); // Ordina la metà destra MergeSort(array, medio + 1, destra); // Unisci le due metà ordinate Merge(array, sinistra, medio, destra); } } // Metodo per unire due sottoarray ordinati private static void Merge(int[] array, int sinistra, int medio, int destra) { // Dimensione dei due sottoarray int n1 = medio - sinistra + 1; int n2 = destra - medio; // Array temporanei per sinistra e destra int[] sinistraArray = new int[n1];

int[] destraArray = new int[n2]; // Copia i dati nei sottoarray for (int i = 0; i < n1; i++) sinistraArray[i] = array[sinistra + i]; for (int j = 0; j < n2; j++) destraArray[j] = array[medio + 1 + j]; // Indici iniziali per i sottoarray e l'array principale int iSinistra = 0, iDestra = 0, k = sinistra; // Merge dei due sottoarray while (iSinistra < n1 && iDestra < n2) { if (sinistraArray[iSinistra] <= destraArray[iDestra]) { array[k] = sinistraArray[iSinistra]; iSinistra++; } else { array[k] = destraArray[iDestra]; iDestra++; } k++; } // Copia gli elementi rimanenti del sottoarray sinistro (se ce ne sono) while (iSinistra < n1) { array[k] = sinistraArray[iSinistra]; iSinistra++; k++; } // Copia gli elementi rimanenti del sottoarray destro (se ce ne sono) while (iDestra < n2) { array[k] = destraArray[iDestra]; iDestra++; k++; } }