Advertisement
Guest User

Untitled

a guest
Sep 23rd, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.00 KB | None | 0 0
  1. package cse0214;
  2. import java.util.*;
  3. ////////////////////////////////////////////
  4. class MergeSort{
  5.     double [] data;
  6.     int n;
  7.     int counter1, counter2;
  8.    
  9.     MergeSort(int total){
  10.         n= total;
  11.         data=new double [n];
  12.         counter1=0;
  13.         counter2=0;
  14.     }//mergersort initial
  15. void dataInput()
  16. {
  17.     Scanner s= new Scanner (System.in);
  18.     System.out.println("Enter "+ n + " data");
  19.     for(int i=0; i<n;i++)
  20.         data[i]=s.nextDouble();
  21. }////end of dataInput
  22.  
  23. void printArray()
  24. {
  25.     System.out.println("currrent data are");
  26.     for(int i=1; i<n;i++)
  27.         System.out.print(data[i]+ "\t");
  28.     System.out.println();
  29. }//end of printArray
  30.  
  31. void divide(int left, int right)
  32. {
  33.     if(left< right)
  34.     {
  35.          int mid = (left+right)/2;
  36.          divide(left, mid);
  37.          divide(mid+1, right);
  38.          
  39.          merge(left, mid, right );
  40.          
  41.     }//end of if
  42.    
  43.    
  44.    
  45.    
  46.    
  47.    
  48.    
  49. }//end of divide
  50.  
  51.  void  merge(int left, int mid,int right)
  52.     {
  53.         int leftbegin =left;
  54.         int leftend= mid;
  55.        
  56.        
  57.         int rightbegin= mid+1;
  58.         int rightend= right;
  59.        
  60.         int n1= leftend - leftbegin + 1;
  61.         int n2= rightend - rightbegin + 1;
  62.        
  63.         //////temp arrray
  64.         double L[]= new double[n1];
  65.         double R[] = new double[n2];
  66.        
  67.         //copy to temp array
  68.         for(int i = 0; i<n1; i++)
  69.             L[i] = data [leftbegin + i];
  70.        
  71.        
  72.          for(int j = 0; j<n2; j++)
  73.             R[j] = data [rightbegin + j];
  74.          
  75.          int i = 0, j = 0, k = leftbegin;
  76.          
  77.          while(i<n1 && j<n2)
  78.          {
  79.               if(L[i]<=R[j])
  80.               {
  81.                   data[k] = L[i];
  82.                   i++;
  83.                   k++;
  84.                  
  85.               }
  86.               else{
  87.               data[k] = R[j];
  88.                   j++;
  89.                   k++;
  90.               }
  91.             }///end of while loop
  92.               ///copy remaining data if any
  93.               while(i<n1)
  94.               {
  95.                  
  96.                       data[k] =L[i];
  97.                       i++;
  98.                       k++;
  99.                  
  100.               }
  101.               while(j<n2)
  102.               {
  103.                  
  104.                       data[k] =R[j];
  105.                       j++;
  106.                       k++;
  107.                  
  108.               }
  109.        
  110.        
  111.     }//end of merge method
  112.  
  113.  void sort(){
  114.      divide(0,n-1);
  115.  }
  116. }////end of mergesort
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124. ////////////////////////////////////////////////
  125.  
  126.  
  127. public class MyProgram {
  128.  
  129.    
  130.     public static void main(String[] args) {
  131.  
  132.         Scanner s= new Scanner(System.in);
  133.         int total;
  134.         System.out.println("How many data?");
  135.         total=s.nextInt();
  136.         MergeSort a=new MergeSort(total);
  137.         a.dataInput();
  138.         a.printArray();
  139.         System.out.println("After merge sort");
  140.         a.sort();
  141.         a.printArray();
  142.     }
  143.    
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement