Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Ord - Ord.c

Ord.c

Caricato da:
Scarica il programma completo

  1. /*
  2.  Tutto il codice di seguito è stato scritto ed ideato da
  3.  Lorenzo La Porta, ridistribuzione, copiatura e modificazione
  4.  del codice devono essere effettuati con l'assenso dell'autore
  5. */
  6.  
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <time.h>
  10. #define N 8
  11. void swap(int *p, int *pp)
  12. {
  13.     int q=*p;
  14.     *p=*pp;
  15.     *pp=q;
  16. }    
  17. void ord(int *vet, int beg, int end)//Versione ricorsiva originale
  18. {                                   //Non del tutto funzionante
  19.     if(beg>=end)return;//semplici asserzioni che verificano che la fine non sia dopo l'inizio
  20.                        //o che comunque fermano il tutto quando si sà di essere arrivati alla
  21.                        //fine, ciò quando si ha ridotto a 1 o 0 il vettore              
  22.     int max=beg,//continene l'indirizzo del numero massimo del vettore
  23.         min=end,//contiene l'indirizzo del numero minimo del vettore
  24.         i=beg;//per ciclare il vettore
  25.     for(;i<end;i++)//fino alla fine
  26.         if(vet[i]>vet[max])max=i;//se il numero è maggiore di vet[max] allora cambia max
  27.         else if(vet[i]<vet[min])min=i;//se il numero è minore di vet[min] allora cambia min
  28.        
  29.     swap(&vet[min],&vet[beg]);//scambia l'elemento minimo con l'elemento 'iniziale
  30.     if(max==beg)max=min;//se non lo ho già fatto allora scambio elemento massimo e elemento iniziale
  31.     swap(&vet[max],&vet[end]);//scambio
  32.    
  33.     ord(vet,beg+1,end-1);//faccio lo stesso con gli elementi inferiori
  34. }    
  35. int main(int argc, char **args)
  36. {
  37.     int vet[N]={0},i;
  38.     for(i=0;i<N;i++)
  39.     {
  40.         printf("Elemento %d: ",i+1);
  41.         scanf("%d",&vet[i]);
  42.     }    
  43.     ord(vet,0,N-1);
  44.     for(i=0;i<N;printf("\nElemento %d: %d",i,vet[i++]));
  45.     getch();
  46. }