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!
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;
}