Il mergesort è un <a href="https://it.wikiwhat.page/kavramlar/algoritmo%20di%20ordinamento">algoritmo di ordinamento</a> di tipo divide et impera che funziona suddividendo ripetutamente una lista in sottoliste più piccole, ordinando ciascuna sottolista e quindi unendo le sottoliste ordinate per produrre una nuova lista ordinata.
Come Funziona:
Caratteristiche Importanti:
Complessità Temporale:
Complessità Spaziale: O(n) Il mergesort richiede spazio aggiuntivo per memorizzare le sottoliste durante il processo di unione. Questo lo rende non un algoritmo in-place.
Stabile: Sì Il mergesort è un <a href="https://it.wikiwhat.page/kavramlar/ordinamento%20stabile">ordinamento stabile</a>, il che significa che mantiene l'ordine relativo degli elementi con chiavi uguali.
Ricorsivo: Tipicamente implementato usando la ricorsione, sebbene sia possibile un'implementazione iterativa.
Adatto per:
Vantaggi:
Svantaggi:
Esempio (Pseudocodice):
function mergesort(lista)
if lunghezza(lista) <= 1
return lista // Già ordinata
metà = lunghezza(lista) / 2
sinistra = mergesort(lista[0..metà-1])
destra = mergesort(lista[metà..lunghezza(lista)-1])
return merge(sinistra, destra)
function merge(sinistra, destra)
risultato = lista vuota
i = 0 // Indice per sinistra
j = 0 // Indice per destra
while i < lunghezza(sinistra) e j < lunghezza(destra)
se sinistra[i] <= destra[j]
aggiungi sinistra[i] a risultato
i = i + 1
altrimenti
aggiungi destra[j] a risultato
j = j + 1
// Aggiungi gli elementi rimanenti, se presenti
while i < lunghezza(sinistra)
aggiungi sinistra[i] a risultato
i = i + 1
while j < lunghezza(destra)
aggiungi destra[j] a risultato
j = j + 1
return risultato
Ne Demek sitesindeki bilgiler kullanıcılar vasıtasıyla veya otomatik oluşturulmuştur. Buradaki bilgilerin doğru olduğu garanti edilmez. Düzeltilmesi gereken bilgi olduğunu düşünüyorsanız bizimle iletişime geçiniz. Her türlü görüş, destek ve önerileriniz için iletisim@nedemek.page