Bubble Sort
Ogni passaggio porta il massimo non ordinato verso la fine.
Che cos’è Bubble Sort?
Ogni passaggio porta il massimo non ordinato verso la fine.
Ordina scambiando inversioni adiacenti.
Punti importanti
- Testa input vuoti, singoli, duplicati e ordinati.
- Separa correttezza e ottimizzazione.
- Preferisci la standard library in produzione.
Visualizzatore di Bubble Sort
O(n²)Usa Avvia o Passo per seguire ogni confronto e spostamento dei dati.
Esempi di codice C e C++
main.c
#include <stdio.h>
int main(void) {
int values[] = {5, 1, 4, 2};
for (int end = 3; end > 0; --end) {
int changed = 0;
for (int index = 0; index < end; ++index) {
if (values[index] > values[index + 1]) {
int temporary = values[index];
values[index] = values[index + 1];
values[index + 1] = temporary;
changed = 1;
}
}
if (!changed) break;
}
for (int index = 0; index < 4; ++index) {
printf("%d ", values[index]);
}
}
1 2 4 5
C++
main.cpp
#include <iostream>
#include <vector>
int main() {
std::vector values{5, 1, 4, 2};
for (auto end = values.end(); end != values.begin(); --end) {
bool changed = false;
for (auto item = values.begin(); item + 1 != end; ++item) {
if (*item > *(item + 1)) {
std::iter_swap(item, item + 1);
changed = true;
}
}
if (!changed) break;
}
for (int value : values) {
std::cout << value << ' ';
}
}
1 2 4 5
Confronto tra C e C++
È didattico ma O(n²); l’early exit rende O(n) un input ordinato, mentre C++ production usa normalmente std::sort.
C
Loop, puntatori, dimensioni e buffer sono espliciti.
C++
Iteratori e algoritmi separano operazione e storage.
Esercizi pratici
Esegui entrambe le versioni e modificale per osservare le diverse garanzie.
- Traccia ogni confronto.
- Testa duplicati e valori estremi.
- Confronta con la standard library.