# Implementazioni di algoritmi/Selection sort

Implementazioni di algoritmi
Copertina Tutti i moduli · Sviluppo
    CopertinaImplementazioni di algoritmi/Copertina
* Algoritmo di EuclideImplementazioni di algoritmi/Algoritmo di Euclide
* Elevazione a potenzaImplementazioni di algoritmi/Elevazione a potenza
* Prodotto scalareImplementazioni di algoritmi/Prodotto scalare
* Calcolo della PasquaImplementazioni di algoritmi/Calcolo della Pasqua
* Metodo Monte CarloImplementazioni di algoritmi/Metodo Monte Carlo
* Ricerca
** Ricerca dicotomicaImplementazioni di algoritmi/Ricerca dicotomica
* Numeri primi
** Crivello di EratosteneImplementazioni di algoritmi/Crivello di Eratostene
** Test di primalità
*** Test deterministicoImplementazioni di algoritmi/Test deterministico
*** Test di Miller-RabinImplementazioni di algoritmi/Test di Miller-Rabin
* PRNG
** Mersenne TwisterImplementazioni di algoritmi/Mersenne Twister
** Test Chi QuadratoImplementazioni di algoritmi/Test Chi Quadrato
* Crittografia
** RSAImplementazioni di algoritmi/RSA
** TEAImplementazioni di algoritmi/TEA
* π(Metodi per definire il pi greco)
** Pi grecoImplementazioni di algoritmi/Pi greco
* Algoritmi di ordinamento
** Bubble sortImplementazioni di algoritmi/Bubble sort
** Bucket sortImplementazioni di algoritmi/Bucket sort
** Counting sortImplementazioni di algoritmi/Counting sort
** Gnome sortImplementazioni di algoritmi/Gnome sort
** Insertion sortImplementazioni di algoritmi/Insertion sort
** Merge sortImplementazioni di algoritmi/Merge sort
** QuicksortImplementazioni di algoritmi/Quicksort
** Radix sortImplementazioni di algoritmi/Radix sort
** Selection sortImplementazioni di algoritmi/Selection sort
** Shaker sortImplementazioni di algoritmi/Shaker sort
** Shell sortImplementazioni di algoritmi/Shell sort
Modifica il sommario
L'ordinamento per selezione (selection sort) è un algoritmo di ordinamento che opera internamente;
L'algoritmo opera una divisione in due parti della struttura, sottosequenza ordinata e sottosequenza non ordinata. Partendo dal primo elemento, si ricerca quello più piccolo (o più grande) e lo si scambia inizialmente con l'elemento di partenza, ad ogni iterazione, l'elemento minimo della sottosequenza non ordinata viene spostato nella prima posizione della stessa. Dopo n-1 passi (dove "n" è la lunghezza della struttura da ordinare) di ricerca e scambio, gli elementi saranno ordinati
Risulta poco efficiente, per la sua complessità esponenziale, ma facile da implementare.
Il modo più semplice, per descrivere questo ordinamento interno, è quello di usare una struttura statica, quindi un array.
I passi sono i seguenti:
* Viene Dichiarato e inizializzato un array contenente n elementi (quindi la lunghezza dell'array è n)
* Si inizializza un indice i di un ciclo che va da 0 a n-1
* Si crea un sotto ciclo che inizializza il suo indice j (ogni volta che viene chiamato) con i+1 e arriva fino a n
* Si cerca il più piccolo elemento(o più grande) dell'array
* Si scambia l'elemento più piccolo(o più grande) con l'elemento alla posizione i
* Viene incrementato l'indice i e si torna al passo tre fino alla fine del primo ciclo.

## Implementazioni

Seguono alcuni esempi di implementazione in vari linguaggi (ordinamento crescente).

### VBasic
## Altri progetti

Altri progetti
* Wikipedia
* Wikipedia contiene una voce su questo algoritmo