Originariamente inviato da ChrisS80
Buongiorno a tutti...
Ho un problema da esporvi...
premetto che sono un autodidatta e sto studiando il linguaggio c dal libro "Linguaggio C - Guida alla programmazione 3/ed
di: Alessandro Bellini, Andrea Guidi "
mi si chiede in un esercizio di scrivere un programma che ordini gli elementi di un vettore man mano che si inseriscono da input...
allora usando l'algoritmo di bubble sort non ottimizzato del tutto ho scritto questo:
for(x=0; x<n; x++){
cout << endl;
cin >> vet[x];
r=0; while(vet[x]>vet[r]) r++;
do{p=0;
for(y=r; y<x; y++){
if(vet[y]>vet[y+1]){
aux=vet[y];
vet[y]=vet[y+1];
vet[y+1]=aux;
p=1;}}
}while(p==1);
for(v=0; v<=x; v++)
cout << "\nVet[" << v << "] |-> " << vet[v];}
l'algoritmo funziona...
ma poi in rete ho trovato questo:
void insertion_sort(int x[], int n)
{
int i, j, app;
for (i=1; i<n; i++) {
app = x[i];
j = i-1;
while ((j>=0) && (x[j]>app)) {
x[j+1] = x[j];
j--;
}
x[j+1] = app;
}
}
l'ho studiato l'ho capito... e mi son chiesto perchè non l'ho pensato prima?
il vero consiglio che vorrei è questo:
secondo voi è giusto che mi rompi il capo a scrivere un algoritmo...
quando posso studiarne uno già scritto - considerando il fatto che sto in fase di "apprendimento"?
eppure questa cosa mi demoralizza!!!
grazie a tutti