vettori_cpp — versione great

👁 GREAT ← Standard
Vettori in C++
Definizione · Popolamento · Bubble Sort
01

Che cos'è un vettore?

Un vettore è una lista di elementi dello stesso tipo messi uno dopo l'altro in memoria.

Ogni elemento ha un numero d'ordine chiamato indice.
L'indice parte sempre da 0, non da 1!

Un vettore di 5 elementi ha indici: 0, 1, 2, 3, 4
Come si scrive
tipo nome[dim];
Accesso a un elemento
nome[indice]
Primo elemento
nome[0]
Ultimo (su 5 elem.)
nome[4]
esempio — int arr[6] = {12, 7, 3, 9, 5, 11}

// clicca una cella per evidenziarla

02

Come si dichiara

Si scrive: tipo · nome · [quanti elementi]

Puoi anche scrivere subito i valori dentro le graffe { }.
Se metti {0}, tutti gli elementi diventano zero.
C++ — dichiarazione🔒 protetto
// Solo dichiarazione (valori non definiti)
int arr[5];

// Dichiarazione con valori
int arr[5] = {8, 6, 9, 7, 5};

// Tutti a zero
int arr[5] = {0};

// Con costante per la dimensione
const int N = 5;
int arr[N];
03

Popolamento da tastiera

Si usa un ciclo for che va da 0 a N-1.
Ad ogni giro si legge un valore con cin e lo si mette nella cella arr[i].
C++ — leggi e stampa🔒 protetto
#include <iostream>
using namespace std;

int main() {
    const int N = 5;
    int arr[N];

    // Leggo 5 valori
    for (int i = 0; i < N; i++) {
        cout << "Valore [" << i << "]: ";
        cin  >> arr[i];
    }

    // Stampo tutti i valori
    for (int i = 0; i < N; i++)
        cout << arr[i] << " ";
}
prova — inserisci 5 valori
i tuoi valori
vettore caricato
04

Bubble Sort

Il Bubble Sort mette in ordine il vettore confrontando due elementi vicini.

Se il primo è più grande del secondo → li scambia.
Ripete questo per tutte le coppie, tante volte.

Alla fine il vettore è ordinato dal più piccolo al più grande.
C++ — funzione bubbleSort🔒 protetto
void bubbleSort(int arr[], int n) {
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - i - 1; j++) {
            if (arr[j] > arr[j+1]) {
                // scambio
                int tmp       = arr[j];
                arr[j]      = arr[j+1];
                arr[j+1]  = tmp;
            }
        }
    }
}
Lo scambio: serve sempre una variabile tmp (temporanea).
Senza tmp uno dei due valori va perso per sempre!
05

Simulazione passo-passo

vettore di lavoro
normale
confronto
scambio
ordinato
passata i
posizione j
confronti
0
scambi
0
stato
pronto
800ms
// log dei passi...
06

Tutti i passaggi

Qui sotto puoi vedere ogni singolo confronto del Bubble Sort in una tabella completa.
// premi un bottone per generare la tabella
07

Quiz di verifica

1. Dato int arr[5], qual è l'indice dell'ultimo elemento?
2. Quante comparazioni fa il Bubble Sort nel caso peggiore con N=5?
3. Perché il ciclo interno va fino a n−i−1?
4. Per scambiare due elementi serve sempre una variabile tmp?