A parte che non capisco bene il funzionamento, soprattutto perchè mescoli variabili intere con puntatori ad interi (nel ciclo for con j, i, n)...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
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!

Rispondi quotando