Shaker sort: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
Riga 8:
|complete=
}}
In [[informatica]] lo '''Shaker sort''', noto anche come '''Bubble Sort Bidirezionale''', '''Cocktail Sort''', '''Cocktail Shaker Sort''', '''Ripple sort''', '''Happy hour sorg''' o '''Shuttle Sort''' è un [[algoritmo]] [[algoritmo di ordinamento|di ordinamento]] dei dati sviluppato dalla [[Sun Microsystems]]. Lo shaker sort è sostanzialmente una variante del [[bubble sort]]:
''Nota: la comprensione di quanto segue richiede di avere compreso il funzionamento generale del [[bubble sort]].''
Riga 41 ⟶ 40:
Il primo passaggio verso destra spostera l'elemento più grande nella sua posizione corretta alla fine della lista, mentre il successivo passaggio verso sinistra sposterà l'elemento più piccolo nella sua posizione corretta all'inizio della lista.
Il secondo passaggio completo sposterà il secondo elemento più grande ed il secondo più piccolo nelle loro posizioni corrette, e così via: dopo "''i''" passaggi i primi "''i''" elementi e gli ultimi "''i''" elementi della lista saranno posizionati correttamente, e non sarà necessario ricontrollarli. Il numero di operazioni può essere ridotto accorciando la parte della lista che viene ordinata ad ogni passaggio. <!-- (see [[Bubble_sort#Alternative_implementations|bubble sort]]).-->
'''procedure''' cocktailSort( A ''':''' lista degli elementi da ordinare ) '''defined as:'''
Riga 73 ⟶ 72:
==Spiegazione==
Il bubble sort ha una asimmetria intrinseca: i valori dell'array vengono spostati ''velocemente'' in un verso (e precisamente quello in cui procede la scansione dell'array durante una iterazione) e ''lentamente'' nell'altro verso. Per esempio, se l'array viene
15 4 10 11 2
Durante la prima iterazione
4 10 11 2 15
Riga 83 ⟶ 82:
Si può quindi notare che nell'arco di ''una sola'' iterazione, il "15" (numero massimo che si trovava in prima posizione) ha attraversato l'intero array. Il "2", che si trovava in una situazione simmetrica (numero minimo in ultima posizione), ha invece percorso un solo passo verso la sua collocazione definitiva.
In generale, un numero destinato alla posizione ''N'' e inizialmente collocato alla posizione ''M'', dove ''N''<''M'', richiederà ''M''-''N'' iterazioni per giungere alla sua cella di destinazione. Se invece ''M''<''N'', il suo spostamento sarà mediamente più rapido. Il caso particolare in cui il numero destinato alla prima posizione dell'array si trovi nell'ultima corrisponde a una situazione di "caso peggiore" del bubblesort, in cui saranno necessarie tutte le ''N''-1 iterazioni dell'algoritmo per ottenere l'array ordinato.
==Shakersort==▼
▲==Shakersort==
Il nome shaker sort (ordinamento "a shaker", con riferimento allo strumento per preparare i [[cocktail]]) suggerisce abbastanza chiaramente in cosa lo shaker sort modifichi il bubble sort. Anziché
Tutte le ottimizzazioni e le varianti previste per il
== Altri progetti ==
|