Advertisement
Jonas_3k

/*- Ordenação @ MergeSort -*/

Apr 5th, 2012
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.50 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<time.h>
  3. void intercala(int vetor[],int inicio,int meio,int fim);
  4. void merge(int vetor[],int incio,int fim);
  5. int main()
  6. {
  7.     int vetor[10],IND;
  8.     time(NULL);
  9.  
  10.     for(IND = 0; IND < 10; IND++)
  11.     {
  12.         vetor[IND] = rand() % 10;
  13.     }
  14.  
  15.     merge(vetor,0,9);
  16.  
  17.     for(IND = 0; IND < 10; IND++)
  18.     {
  19.         printf("%d\t",vetor[IND]);
  20.     }
  21.     return 0;
  22. }
  23.  
  24. void intercala(int vetor[],int inicio,int meio,int fim)
  25. {
  26.     int primeiro,segundo,fprimeiro,fsegundo;
  27.     int aux[10],i,j;
  28.     primeiro = inicio;
  29.     fprimeiro = meio;
  30.     segundo = meio + 1;
  31.     fsegundo = fim;
  32.  
  33.     while(primeiro <= fprimeiro && segundo <= fsegundo)
  34.     {
  35.         if(vetor[primeiro] < vetor[segundo])
  36.         {
  37.             aux[i] = vetor[primeiro];
  38.             primeiro++;
  39.         }
  40.         else
  41.         {
  42.             aux[i] = vetor[segundo];
  43.             segundo++;
  44.         }
  45.         i++;
  46.     }
  47.  
  48.     for( j = primeiro; j <= fprimeiro; j++)
  49.     {
  50.         aux[i] = vetor[j];
  51.         i++;
  52.     }
  53.  
  54.     for(j = segundo; j <= fsegundo; j++)
  55.     {
  56.         aux[i] = vetor[j];
  57.         i++;
  58.     }
  59.  
  60.     for(i = inicio ; i < fim; i++)
  61.     {
  62.         vetor[i] = aux[i];
  63.     }
  64.     return;
  65. }
  66.  
  67. void merge(int vetor[],int inicio, int fim)
  68. {
  69.     if(inicio < fim)
  70.     {
  71.         int meio;
  72.         meio = ( inicio + fim ) / 2;
  73.         merge(vetor,inicio,meio);
  74.         meio++;
  75.         merge(vetor,meio,fim);
  76.         intercala(vetor,inicio,meio,fim);
  77.     }
  78.     return;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement