Advertisement
juanjo12x

MergeSort

Apr 10th, 2014
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.48 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define MAX 10
  5.  
  6.  
  7. void merge(int A[], int iniIzq, int finIzq, int iniDer, int finDer){
  8.     int ordenados[MAX];
  9.     int indice_izq = iniIzq;
  10.     int indice_der = iniDer;
  11.    
  12.     int indice_ord = iniIzq;
  13.     while((indice_izq <=finIzq) && (indice_der <=finDer)){
  14.         if (A[indice_izq] < A[indice_der]){
  15.             ordenados[indice_ord] = A[indice_izq];
  16.             indice_izq++;
  17.         }else{
  18.             ordenados[indice_ord] = A[indice_der];
  19.             indice_der++;
  20.         }
  21.         indice_ord++;
  22.     }
  23.    
  24.     while(indice_izq <= finIzq)
  25.         ordenados[indice_ord++] = A[indice_izq++];
  26.    
  27.     while(indice_der <= finDer)
  28.         ordenados[indice_ord++] = A[indice_der++];
  29.    
  30.     for (indice_ord=iniIzq; indice_ord<=finDer; indice_ord++)
  31.         A[indice_ord] = ordenados[indice_ord];
  32.    
  33. }
  34.  
  35.  
  36. void merge_sort(int A[], int ini, int fin){
  37.     if (ini<fin){
  38.         int medio = (ini + fin)/2;
  39.         merge_sort(A, ini, medio);
  40.         merge_sort(A, medio + 1, fin);
  41.         merge(A, ini, medio, medio+1, fin);
  42.     }
  43. }
  44.  
  45. void pprint(int A[]){
  46.     int i;
  47.     for(i=0;i<MAX;i++)
  48.         printf("%d ", A[i]);
  49.     printf("\n");
  50.    
  51. }
  52.  
  53. int main(int argc, char** argv) {
  54.    
  55.     int N[MAX] = {3, 6, 1, 8, 9, 2, 5, 0, 7, 4};
  56.    
  57.     printf("Arreglo Original:\n");
  58.     pprint(N);
  59.    
  60.     merge_sort(N,0,MAX-1);
  61.    
  62.     printf("Arreglo Ordenado:\n");
  63.     pprint(N);
  64.    
  65.     return (EXIT_SUCCESS);
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement