PDA

Visualizza la versione completa : Bubble sort in C++


AmedeoFalco
07-10-2017, 11:14
Salve ragazzi ho un problema con questo codice con ordinamento a bolle!! In pratica quando inserisco gli elementi nel vettore, esempio:

dammi riemp: 3
Ins elem 1 : 3
/ / / 2: 2
/ / / 3: 1

quando stamap il vettore ordinato stampa 0 1 2!!! Non ho capito perch sinceramente!! Allego il codice!


#include<iostream>
#include<cstdlib>
#include<iomanip>
using std::setw;
using namespace std;


void AddItems(int a[],int n){
for(int i=0;i<n;i++){
cout<<"inserisci elemnto n. "<<i+1<<": ";
cin>>a[i];
}
cout<<"Il vettore caricato e': ";
for(int i=0;i<n;i++){
cout<<setw(4)<<a[i];
}
return ;
}

void ordina (int a[],int n){
int hold;
for( int pass=1;pass<=n;pass++){
for(int i=0;i<=n-1;i++){
if(a[i]>a[i+1]){

hold=a[i];
a[i]=a[i+1];
a[i+1]=hold;
}
}
}
return ;
}
void stampa(int a[],int n){
cout<<"\nIl vettore ordinato vale: ";
for(int i=0;i<n;i++){
cout<<setw(4)<<a[i];
}
return;
}


int main(){
int n;
cout<<"dammi il riemp.: ";
cin>>n;
int a[n];
AddItems(a,n);
ordina(a,n);
stampa(a,n);

return 0;
}

oregon
07-10-2017, 12:59
Occhio a questa for

for (int i = 0; i <= n - 1; i++) {

tieni presente che se i = a n-1 allora i+1 = a n

AmedeoFalco
07-10-2017, 16:58
Occhio a questa for

for (int i = 0; i <= n - 1; i++) {

tieni presente che se i = a n-1 allora i+1 = a n

Quindi il for corretto :

for(int i=0; i<n-1;i++)

Loading