• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Guida Algoritmi di ordinamento

ptm

Utente Master
Autore del topic
13 Maggio 2008
2.716
62
Miglior risposta
0
Algoritmi di ordinamento

Gli algoritmi di ordinamento sono algoritmi che consentono di riposizionare elementi di una lista in un determinato ordine. Gli ordini più utilizzati sono quello numerico e quello lessicografico.
Il problema dell'ordinamento è molto importante in informatica in quanto permette di ottimizzare il funzionamento di altri algoritmi (per esempio quelli di unione di due liste o di ricerca); di conseguenza è chiaro che sarebbe desiderabile avere algoritmi di ordinamento il più efficienti possibile.

Un algoritmo di ordinamento deve rispettare due condizioni:
  1. Deve essere stabilita una relazione d'ordine tra gli elementi (per esempio x[SUB]1[/SUB] ≤ x[SUB]2[/SUB] ≤ .. ≤ x[SUB]n[/SUB] )
  2. La lista in output deve essere una permutazione della lista in input (cioè nella lista in output devono apparire tutti e soli gli elementi della lista in input)
Gli algoritmi che vedremo saranno studiati per funzionare sugli array che permettono accesso casuale agli elementi. Un limite fondamentale per gli algoritmi che si basano su confronti è che hanno una complessità computazionale pari a Ω(n log n) dove n è il numero di elementi da ordinare (non ci soffermeremo sulle dimostrazioni delle complessità computazionali degli algoritmi),
Gli algoritmi di ordinamento vengono molto utilizzati nell'apprendimento di materie connesse all'informatica perchè trasmettono una serie importante di concetti come la
Perfavore, Entra oppure Registrati per vedere i Link!
, lo stile "
Perfavore, Entra oppure Registrati per vedere i Link!
" e diversi tipi di
Perfavore, Entra oppure Registrati per vedere i Link!
.


Algoritmi di ordinamento comuni



Note sulle guide
  • Gli algoritmi sono stati scritti in C/C++, ma possono essere costruiti tranquillamente in altri linguaggi
  • Verranno applicati all'ordinamento di vettori (per semplicità), ma i discorsi valgono anche per altre strutture dati
  • Non dimostreremo la complessità computazionale degli algoritmi
 
Ultima modifica:
  • Like
Reactions: sant0 and Dvdxseo
@ptm topic interessante, attendo sviluppi sugli altri algoritmi di ordinamento :soso: .
 
Spero anche in un'aggiunta di almeno un algoritmo di ordinamento non basato sui confronti come esempio di ordinamento in tempo lineare sotto certe ipotesi.. :P