Advertisement
Jorge_Lugo97

14.11.19

Nov 14th, 2019
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.41 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #define size_max 100
  5.  
  6. void mergeSort(int *arr, int 1, int r);
  7. void mezcla(int *a, int ini, int med, int fin);
  8. void printarray (int *A, int size);
  9.  
  10. int main() {
  11.    
  12.     int *arr, i;
  13.     srand(time(0));
  14.     arr=(int*)calloc(size_max,sizeof(int));
  15.     int arr_size=size_max;
  16.     printf("\n\t Tamanio del arreglo: %d", arr_size);
  17.    
  18.     for(i=0; i<arr_size; i++) arr[i]=rand()%arr_size;
  19.     printf("\n\t Arreglo inicial: \n", arr_size);
  20.     printarray(arr, arr_size);
  21.    
  22.     mergeSort (arr, 0, arr_size-1);
  23.    
  24.     printf("\n\t Arreglo ordenado: \n", arr_size);
  25.     printarray(arr, arr_size);
  26.     free(arr);
  27.    
  28.     return 0;
  29. }
  30.  
  31. void printarray (int *A, int size){
  32.    
  33.     int i;
  34.     for(i=0, i<size; i++)
  35.         printf("%d ", *(A+i));
  36.         printf("\n";
  37. }
  38.  
  39.  
  40. void mergeSort(int *arr, int 1, int r){
  41.     int med;
  42.         if(ini<=fin){
  43.             med=(ini+fin)/2;
  44.             mergeSort(a, ini, med);
  45.             mergeSort(a, med+1, fin);
  46.             mezcla (a, ini, med, fin);
  47.         }  
  48. }
  49.  
  50. void mezcla(int *a, int ini, int med, int fin){
  51.     int *aux, m;
  52.     aux = malloc((fin - ini + 1)*sizeof(int));
  53.     int i = ini; int j = med + 1; int k = 0;
  54.        
  55.         while (i <= med && j <= fin) {
  56.                     if (a[i] < a[j]) {aux[k] = a[i]; i++;}
  57.                         else {aux[k] = a[j]; j++;}
  58.                         k++;
  59.         }
  60.        
  61.         while (i <= med ) {aux[k] = a[i]; i++; k++;}
  62.             while (j <= fin ) {aux[k] = a[j]; j++; k++;}
  63.                 for (m = 0; m < fin-ini+1; m++) {a[ini+m]= aux[m];}
  64.                 free(aux);
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement