|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Dec 2010
Messaggi: 14
|
[C]ordinamento per selezione ricorsivo non funzionante
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 )
{
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
__________________
deviltigre...
|
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Feb 2010
Messaggi: 466
|
Quote:
quello che salta pero' subito agli occhi in base al codice da ta postato la condizione if ( *i < *n ) del tuo esempio risulta mai verificata ( *i = 20 e *n= 2 cioe 20<2 = FALSO ) quindi la funzione esce direttamente pero' non credo che anche se entrasse venga effettuato quello che ti aspetti.
__________________
I robot hanno scintillanti fondoschiena metallici che non dovrebbero essere baciati. |
|
|
|
|
|
|
#3 | |
|
Junior Member
Iscritto dal: Dec 2010
Messaggi: 14
|
Quote:
Codice:
void seleziona ( int a [] , int size )
{
int j ;
int i ;
int p ;
int min ;
for ( i = 0 ; i < SIZE - 1 ; i++ )
{
min = a[i] ;
p = i ;
for ( j = i + 1 ; j < SIZE ; j++ )
{
if ( confronta (a [j] , min ) < 0 )
{
min = a[j] ;
p = j ;
}
}
if (p != i )
{
a[p] = a[i] ;
a[i] = min ;
}
}
}
int confronta ( int x , int y )
{
if ( x < y )
return -1 ;
else if (x > y )
return 1 ;
else return 0 ;
}
in effetti ho pasticciato un po ; non avendo idea da dove cominciare ho creato una specie di bubble sort fac-simile , con parecchie sbavature quello che ho postato sopra e il corretto codice della versione iterativa dell'argomento vediamo se riusciamo a cavarne qualcosa grazie
__________________
deviltigre...
|
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Feb 2010
Messaggi: 466
|
io non so di preciso cosa vuoi fare , ma se ti serve un algoritmo di ordinamento implementato in modo ricorsivo puoi utilizzare il quick sort.
__________________
I robot hanno scintillanti fondoschiena metallici che non dovrebbero essere baciati. |
|
|
|
|
|
#5 | |
|
Junior Member
Iscritto dal: Dec 2010
Messaggi: 14
|
Quote:
beh ci penserò ancora un po.. grazie!
__________________
deviltigre...
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:13.




















