Advertisement
cardel

MergeSort

Mar 15th, 2018
671
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.65 KB | None | 0 0
  1. import java.util.Arrays;
  2.  
  3.  
  4.  
  5. public class MergeSort{
  6.    
  7.    
  8.     static void combinar(int A[], int p, int q, int r){
  9.        
  10.         //Mi primer arreglo va desde p hasta q esta ordenado
  11.         //Mi segundo arreglo va desde q +1 hasta r ordenado
  12.        
  13.         int primerArreglo[] = new int[(q-p+1)];
  14.         int segundoArreglo[] = new int[(r-(q+1)+1)];
  15.        
  16.         int count = 0;
  17.         for(int i = p; i<=q; i++){
  18.             primerArreglo[count] = A[i];
  19.             count++;
  20.         }
  21.        
  22.         count = 0;
  23.        
  24.         for(int i= q+1; i<=r; i++){
  25.             segundoArreglo[count] = A[i];
  26.             count++;
  27.         }
  28.        
  29.         //ordenar
  30.        
  31.         int indexPrimerArreglo = 0;
  32.         int indexSegundoArreglo = 0;
  33.        
  34.         for(int i=p; i<=r; i++){
  35.            
  36.             if(indexPrimerArreglo == primerArreglo.length){
  37.                 A[i] = segundoArreglo[indexSegundoArreglo];
  38.                 indexSegundoArreglo++;
  39.             }
  40.             else{
  41.                 if(indexSegundoArreglo == segundoArreglo.length){
  42.                     A[i] = primerArreglo[indexPrimerArreglo];
  43.                     indexPrimerArreglo++;
  44.                 }
  45.                 else{
  46.                     if(primerArreglo[indexPrimerArreglo] > segundoArreglo[indexSegundoArreglo]){
  47.                
  48.                         A[i] = segundoArreglo[indexSegundoArreglo];
  49.                         indexSegundoArreglo++;
  50.                     }else{
  51.                         A[i] = primerArreglo[indexPrimerArreglo];
  52.                         indexPrimerArreglo++;
  53.                 }
  54.  
  55.                 }
  56.                
  57.             }
  58.            
  59.         }
  60.        
  61.     }
  62.    
  63.     static void MergeS(int A[], int p, int r){
  64.         //System.out.println("p "+p+" r "+r);
  65.         if (p < r){
  66.             int q = (p+r)/2;
  67.             MergeS(A, p, q);
  68.             MergeS(A,q+1,r);
  69.             combinar(A,p,q,r);
  70.         }
  71.     }
  72.    
  73.     public static void main(String args[]){
  74.         int[] arreglo = {2,3,9,16,11,22,1,8,0};
  75.         System.out.println(Arrays.toString(arreglo));
  76.  
  77.         MergeS(arreglo,0,arreglo.length-1);
  78.        
  79.         System.out.println(Arrays.toString(arreglo));
  80.     }
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement