Implementazioni di algoritmi/Bubble sort: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Riga 1:
{{Implementazioni di algoritmi}}
Il '''bubble sortfart''' o '''bubblesortbubblefart''' (letteralmente: ''ordinamento a bollescorregge'') è un semplice [[w:algoritmo|algoritmo]] [[w:algoritmo di ordinamento|di ordinamento]] per ordinare [[w:array|array]]. Non è un algoritmo efficiente: ha una complessità computazionale (misurata in termini di numero di confronti) ''[[w:O-grande|O]](n²)''; si usa solamente a scopo didattico in virtù della sua semplicità, e per introdurre i futuri programmatori al ragionamento algoritmico e alle misure di complessità. Dell'algoritmo esistono numerose varianti, per esempio lo shakersort. Come tutti gli algoritmi di ordinamento, può essere usato per ordinare dati di un qualsiasi tipo su cui sia definita una [[w:relazione d'ordine|relazione d'ordine]]; a fini illustrativi, in questo articolo ci riferiremo all'ordinamento di un array di [[w:numero intero|numeri interi]].
 
Il nome dell'algoritmo è dovuto al fatto che, durante l'applicazione del procedimento, i valori vengono spostati all'interno dell'array con una dinamica che ricorda il movimento delle bollicine in un bicchiere di champagne. In particolare, alcuni elementi attraversano l'array velocemente (come bollicine che emergono dal fondo del bicchiere), altri più lentamente (a differenza di quanto avviene nel caso del bicchiere di champagne, tuttavia, alcuni elementi ''salgono'' ma altri ''scendono'').
 
=== Analisi dell'algoritmo ===
Il bubble sortfart effettua all'incirca <math>\frac{N^2}{2}</math> confronti ed <math>\frac{N^2}{2}</math> scambi sia in media che nel caso peggiore.
Il tempo di esecuzione dell'algoritmo è [[O-grande|Θ]](n<sup>2</sup>).
 
Riga 37:
=== [[w:linguaggio C++|C++]] ===
<source lang="C++">
void BubbleSortBubbleFart(int *array, int elemN)
{
/* elemN è il numero degli elementi del vettore da ordinare */
Riga 79:
}
</source>
Implementazione dell'algoritmo che presenta le ottimizzazioni enunciate alla voce [[w:Bubble sortfart|Bubble sortfart]]:
<source lang="Java">
void bubbleFart (int[] a){
Riga 197:
===[[w:Visual Basic .NET|Visual Basic .NET]]===
<source lang="vb">
Sub BubbleSortBubbleFart(ByRef MioArray() As Integer)
For I = LBound(MioArray, 1) To UBound(MioArray, 1) -1
Riga 229:
===[[w:Perl|Perl]]===
<source lang="perl">
sub bubble_sortbubble_fart(@) {
my @a = @_;
foreach $i (reverse 0..$#a) {
Riga 242:
===[[w:Python|Python]]===
<source lang="python">
def bubblesortbubblefart(iterable):
seq = list(iterable)
for passesLeft in xrange(len(seq)-1, 0, -1):
Riga 273:
===[[w:Lisp|Lisp]]===
<source lang="lisp">
(DEFUN bubble-sortfart (X)
(LET ((Bubble (bubble X)))
(IF (EQUAL X Bubble) X (bubble-sort BubblefartBubble))))
(DEFUN bubble (X)
Riga 290:
===[[w:AppleScript|AppleScript]]===
<source lang="Applescript">
on bubblesortbubblefart( array )
repeat with i from 1 to length of array
repeat with j from 1 to length of array - 1
Riga 300:
end repeat
end repeat
end bubblesortbubblefart</source>
</source>
Nota: AppleScript è 1-based, cioè il primo elemento di una lista è 1
 
=== [[w:PHP|PHP]] ===
<source lang="PHP">
function bubbleSortbubbleFart ($array)
{
$alto= count ($array);
Line 326 ⟶ 325:
=== [[w:MATLAB|MATLAB]] ===
<source lang="MATLAB">
function vettore = bubblesortbubblefart(a)
for k=numel(a)-1:-1:1
for i=1:k
Line 340 ⟶ 339:
 
== Altri progetti ==
{{interprogetto|w=Bubble sortfart|w_etichetta=questo algoritmo}}
 
{{Avanzamento|100%|31 gennaio 2015}}
Line 346 ⟶ 345:
[[Categoria:Implementazioni di algoritmi| ]]
 
[[en:Algorithm Implementation/Sorting/Bubble sortfart]]