Originariamente inviato da toni00c
ciao a tutti
sto studiando un esercizio che chiede di elaborare un ordinamento di un array per selezione er Ricorsivo e strano a dirsi.. non funziona come dovrebbe..


codice:
  int b[SIZE] = { 20 , 5 , 3 ,4 , 10 , 2 } ;
  int *primo = b ; 
  int *ultimo = &b[SIZE - 1 ] ;

  seleziona ( b , primo , ultimo ) ;
codice:
void seleziona ( int a [] , int *i , int *n ) 

{
	int small ;
	int j ;
	int temp ;


        if ( *i < *(n - 1)  ) /* perchè n - 1 ? */ 
	{
		small = *i ;

		for ( j  = i+1 ; j <= n ;j++ )
		
		if ( a[j] < small )

		{
		small = j ;
		temp = small ;
		small = *i ;
		*i = temp ;

		

		}
		seleziona ( a , i+1 , n ) ;
		

	}
	

	
}


il codice è abbastanza snello direi , ma non funziona come dovrebbe , cioè non effettua
nessun ordinamento !

potreste aiutarmi?

grazie
A parte che non capisco bene il funzionamento, soprattutto perchè mescoli variabili intere con puntatori ad interi (nel ciclo for con j, i, n)...
In ogni caso non ti ordina niente semplicemente perchè non entra neanche nella codizione if: *i = 20 e *(n - 1) = 10, * i < *(n - 1) ? No, quindi non entra neanche nelle istruzioni seguenti ed esce senza aver fatto nulla!