Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //min: retorna el menor entre dos enteros
- int min(int num1, int num2)
- {
- int result;
- if (num1 < num2)
- result = num1;
- else
- result = num2;
- return result;
- }
- //surplus: se carga la un arreglo desde una posicion dada en otro arreglo
- // dicho de otro modo "se carga la cola de un arreglo en la cola de otro arreglo"
- void surplus(const int array[], unsigned int size, unsigned int index, int result[],unsigned int indexR)
- {
- unsigned int i;
- for(i = index; i < size; i++, indexR++)
- result[indexR] = array[i];
- }
- //merge: ordena dos arreglos (previaminente ordenados) en un nuevo arreglo y
- // retorna la cantidad de datos cargados en el arreglo result
- unsigned int merge(const int array1[], unsigned int size1, const int array2[], unsigned int size2, int result[])
- {
- unsigned int i1 = 0;
- unsigned int i2 = 0;
- unsigned int indexR = 0;
- int minimo ; // minimo actual entre los dos arreglos
- //se carga un nuevo arreglo con valores ordenados hasta que uno de
- //los dos arreglos dados haya acabado sus eleminentos
- while ( (i1 < size1) && (i2 < size2) )
- {
- minimo = min(array1[i1], array2[i2]);
- result[indexR++] = minimo;
- if (minimo == array1[i1])
- i1++;
- else
- i2++;
- }
- //se completa el arreglo result con los valores restantes del arreglo
- // que aun tiene valores
- surplus(array2, size2, i2, result, indexR);
- surplus(array1, size1, i1, result, indexR);
- return size1+size2;
- }
Add Comment
Please, Sign In to add comment