[C++] Bubble sort

ezio1400
Questo tipo di funzione di ordinamento come la devo usare?
So cosa fa la funzione ma non saprei come usarla in un programma.
Basta che in un dato punto del programma la dichiaro e la funzione mi mette in ordine il vettore oppure devo scrivere l'algoritmo della funzione bubble sort e poi chiamarla in un punto del programma?

Risposte
vict85
Scusa ma non capisco ciò che chiedi. Il bubble sort è un algoritmo e non una funzione. Quindi il tuo codice deve avere accesso ad una implementazione fatta da te oppure da qualcun'altro. In generale devi quindi scrivere la funzione che implementa il bubble sort e successivamente chiamarla per l'array che vuoi ordinare.

Se il tuo professore o qualcun'altro ti ha fornito una libreria in cui il bubble sort è implementato allora ti basta includere la libreria e chiamare la funzione.

ezio1400
Oggi ho affrontato un esercizio che mi chiedeva di utilizzare bubble sort per ordinare in ordine crescente i valori contenuti in un array di 10 celle e io non avendo mai avuto modo di usare bubble sort avrei proceduto in questo modo:

void ordina(int v[], int n) {
int i,k;
int temp;
for(i = 0; i for(k = 0; k if(v[k] > v[k+1]) {
temp = v[k];
v[k] = v[k+1];
v[k+1] = temp;
}
}
}
}

Quindi avrei creato una funzione che se chiamata mi ordinava l'array.
Poi ho scoperto che bubble sort fa una cosa del tutto analoga. Ora mi chiedo se bubble sort sia un algoritmomemorizzato nella memoria della linguaggio in qualche libreria standard che mi permetta di ordinare l'array senza star li a scrivere la funzione "ordina". Perchè se non fosse cosi non capisco la differenza tra l'ordinare un array con bubble sort o senza bubble sort.

vict85
Il C++, in algorithm, contiene la funzione sort e alcune varianti. L'algoritmo usato non è specificato nello standard. In genere non usano il bubblesort. Il C contiene la funzione qsort in stdlib.h (il nome fa pensare che usi il quicksort ma non è specificato nello standard). Ovviamente puoi usare qsort anche nel C++.

ezio1400
Ma alla fine dei conti come devo fare ad ordinare un array con bubble sort come chiede l'esercizio?

vict85
Se quella è la funzione e w è il tuo array di 10 elementi ti basta chiamare
ordina(w,10);
dove ovviamente devi aver compiato quella funzione in un punto appropriato del tuo codice. Ma stai studiando su un libro? Da solo/a?

ezio1400
Si ma sul libro che possiedo non viene citato questo bubble sort.

minomic
"vict85":
Scusa ma non capisco ciò che chiedi. Il bubble sort è un algoritmo e non una funzione. Quindi il tuo codice deve avere accesso ad una implementazione fatta da te oppure da qualcun'altro. In generale devi quindi scrivere la funzione che implementa il bubble sort e successivamente chiamarla per l'array che vuoi ordinare.

Se il tuo professore o qualcun'altro ti ha fornito una libreria in cui il bubble sort è implementato allora ti basta includere la libreria e chiamare la funzione.

@ezio1400: Ti consiglio di rileggere il post di vict85 che ho citato, perché c'è tutto ciò che devi sapere.
Se invece non conosci proprio l'algoritmo, allora ti consiglio di iniziare leggendo qui.

Per altri dubbi siamo qui.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.