Guest User

Untitled

a guest
May 25th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.44 KB | None | 0 0
  1. //min: retorna el menor entre dos enteros
  2. int min(int num1, int num2)
  3. {
  4.     int result;
  5.    
  6.     if (num1 < num2)
  7.         result = num1;
  8.     else
  9.         result = num2;
  10.    
  11.     return result;
  12.    
  13. }
  14.  
  15.  
  16. //surplus: se carga la un arreglo desde una posicion dada en otro arreglo
  17. // dicho de otro modo "se carga la cola de un arreglo en la cola de otro arreglo"
  18. void surplus(const int array[], unsigned int size, unsigned int index, int result[],unsigned int indexR)
  19. {
  20.     unsigned int i;
  21.     for(i = index; i < size; i++, indexR++)
  22.         result[indexR] = array[i];     
  23. }
  24.  
  25. //merge: ordena dos arreglos (previaminente ordenados) en un nuevo arreglo y
  26. // retorna la cantidad de datos cargados en el arreglo result
  27. unsigned int merge(const int array1[], unsigned int size1, const int array2[], unsigned int size2, int result[])
  28. {
  29.  
  30.     unsigned int i1 = 0;
  31.     unsigned int i2 = 0;
  32.     unsigned int indexR = 0;
  33.     int minimo ;    // minimo actual entre los dos arreglos
  34.    
  35.    
  36.     //se carga un nuevo arreglo con valores ordenados hasta que uno de
  37.     //los dos arreglos dados haya acabado sus eleminentos
  38.     while ( (i1 < size1) && (i2 < size2) )
  39.     {
  40.         minimo = min(array1[i1], array2[i2]);
  41.         result[indexR++] = minimo;
  42.         if (minimo == array1[i1])
  43.             i1++;
  44.         else
  45.             i2++;
  46.     }
  47.    
  48.     //se completa el arreglo result con los valores restantes del arreglo
  49.     // que aun tiene valores
  50.     surplus(array2, size2, i2, result, indexR);
  51.     surplus(array1, size1, i1, result, indexR);
  52.    
  53.    
  54.  
  55.     return size1+size2;
  56.  
  57. }
Add Comment
Please, Sign In to add comment