/*
	Programma che ordina una sequenza di interi usando l'algoritmo di ordinamento
	BubbleSort realizzato mediante la ricorsione
*/

#include <iostream.h>
#define MAX 10

void BubbleSort(int, int);  //funzione di ordinamento
int array[MAX];

int main(){

	//lettura sequenza di numeri
	cout<<"Inserisci la sequenza di 10 numeri interi:\n";
	for(int x=0; x<MAX; x++){
		cout<<(x+1)<<": ";
		cin>>array[x];
	}

	BubbleSort(0,MAX-1); 	//ordinamento

	//stampa sequenza ordinata
	cout<<"\nLa sequenza ordinata è:\n"<<endl;
	for (int i=0; i<MAX; i++)
		cout<<array[i]<<endl;
	return 0;
}

void BubbleSort(int i, int f){
	if(f!=0){

		//scambio tra i due elementi della bolla
		if(array[i]>array[i+1]){
			int box=0;
			box=array[i];
			array[i]=array[i+1];
			array[i+1]=box;
		}

		if(i==f-1)	//se è arrivato alla fine della passata
			BubbleSort(0,f-1);	//richiama la funzione ripartendo dal primo
										//elemento e riducendo di 1 elemento la grandezza
										//dell'array da controllare
		else        //se non è ancora arrivato alla fine della passata
			BubbleSort(i+1,f); 	//richiama la funzione passando l'indice del
										//prossimo elemento
	}
}

