DAA - Bubble Sort
Bubble Sort è un algoritmo di ordinamento elementare, che funziona scambiando ripetutamente elementi adiacenti, se necessario. Quando non sono necessari scambi, il file viene ordinato.
Questa è la tecnica più semplice tra tutti gli algoritmi di ordinamento.
Algorithm: Sequential-Bubble-Sort (A)
fori← 1 to length [A] do
for j ← length [A] down-to i +1 do
if A[A] < A[j - 1] then
Exchange A[j] ↔ A[j-1]
Implementazione
voidbubbleSort(int numbers[], intarray_size) {
inti, j, temp;
for (i = (array_size - 1); i >= 0; i--)
for (j = 1; j <= i; j++)
if (numbers[j - 1] > numbers[j]) {
temp = numbers[j-1];
numbers[j - 1] = numbers[j];
numbers[j] = temp;
}
}
Analisi
Qui, il numero di confronti sono
1 + 2 + 3 +...+ (n - 1) = n(n - 1)/2 = O(n2)
Chiaramente, il grafico mostra il n2 natura del bubble sort.
In questo algoritmo, il numero di confronto è indipendente dal set di dati, cioè se gli elementi di input forniti sono in ordine ordinato o in ordine inverso o casuale.
Requisiti di memoria
Dall'algoritmo sopra indicato, è chiaro che il Bubble sort non richiede memoria aggiuntiva.
Esempio
Unsorted list: |
|
1 ° di iterazione:
5 > 2 swap |
|
|||||||
5 > 1 swap |
|
|||||||
5 > 4 swap |
|
|||||||
5 > 3 swap |
|
|||||||
5 < 7 no swap |
|
|||||||
7 > 6 swap |
|
2 ° iterazione:
2 > 1 swap |
|
|||||||
2 < 4 no swap |
|
|||||||
4 > 3 swap |
|
|||||||
4 < 5 no swap |
|
|||||||
5 < 6 no swap |
|
Non v'è alcun cambiamento nella 3 ° , 4 ° , 5 ° e 6 ° iterazione.
Finalmente,
the sorted list is |
|