Algoritmo MergeSort para ordenar números usando la estrategia de divide y conquista

JAVA:
  1. public class MergeSortV2 {
  2.  
  3.     /**
  4.      * @param args
  5.      */
  6.     static void Merge(int A[],int p, int q, int r)
  7.     {
  8.         int n1 = q-p+1;
  9.         int n2 = r-q;
  10.         int L[] = new int[n1+2];
  11.         int R[] = new int[n2+2];
  12.         for(int i = 1; i <= n1; i++)
  13.         {
  14.             L[i] = A[p+i-1];
  15.         }
  16.         for(int j = 1; j <= n2; j++)
  17.         {
  18.             R[j] = A[q+j];
  19.         }
  20.         L[n1+1] = Integer.MAX_VALUE;
  21.         R[n2+1] = Integer.MAX_VALUE;
  22.         int i = 1;
  23.         int j = 1;
  24.         for(int k = p; k <= r; k++)
  25.         {
  26.             if(L[i] <R[j])
  27.             {
  28.                 A[k] = L[i];
  29.                 i++;
  30.             }
  31.             else
  32.             {
  33.                 A[k] = R[j];
  34.                 j++;
  35.             }
  36.         }
  37.     }
  38.     static void MergeSort(int A[],int p, int r)
  39.     {
  40.         if(p<r)
  41.         {
  42.             int q = (p+r)/2;
  43.             MergeSort(A, p, q);
  44.             MergeSort(A, q+1, r);
  45.             Merge(A, p, q, r);
  46.            
  47.         }
  48.     }
  49.     public static void main(String[] args) {
  50.         // TODO Auto-generated method stub
  51.  
  52.         int arr[] = {6,23,33,1,5,77};
  53.         MergeSort(arr,1,5);
  54.         for(int i = 0; i <6; i++)
  55.         {
  56.             System.out.println(arr[i]);
  57.         }
  58.     }
  59.  
  60. }

Popularidad: 74%