Merg_sort.
java
 1 import java .util.Scanner;
 2
 3
 4 public class Merg_sort {
 5     int a [];
 6     static int [] arr;
 7     static int[] temp;
 8      static Scanner scan = new Scanner (System.in) ;
 9
10     public static void main (String args[]){
11         System.out.println("Hello I'm merge sort my operation basic is sorted array ");
12         System.out.println("Time efficiency : O(n log n) &     space efficiency : O(n)");
13         System.out.println( "Pleas enter size array    " );
14         System.out.println("");
15
16         int n=scan.nextInt();    // length array
17
18         int a []=new int [n];    //array
19
20         // add values to array
21
22         for(int i = 0 ; i<=n-1 ; i++){
23         System.out.println( "Pleas enter value "+ (i+1) + " into array" );
24         System.out.println("");
25
26         int s= scan .nextInt();
27         a[i]=s;
28         }
29         System.out.println( "befor sorting : " );
30         System.out.println("");
31
32         for(int k = 0 ; k<=n-1 ; k++)
33
34         System.out.println( "a["+k+"]"+ "=" + a[k] +"           " );
35         System.out.println("");
36         System.out.println("");
37         print1(a);
38
39         }
40
41         /////// prepare for sort *
42         static void prepare_for_sort(int [] aa)
43         {
44             arr=aa;
45             temp= new int [aa.length];
46             do_merge_sort(0,aa.length-1);
47
48
49         }// end method prepare_for_sort
50
51
52
53         ////// divide to small problem *
54         static void do_merge_sort(int lower,int higher){
55
56             if (lower < higher)
57                {
58                  int mid =lower+(higher-lower)/2;
59                  do_merge_sort( lower,mid);
60                  do_merge_sort( mid+1,higher);
61                  merge_part(lower,mid,higher);
62                  }// end if
                                     Page 1
                                      Merg_sort.java
 63
 64     }// end method do_merge_sort
 65
 66
 67
 68     /////// merge sort *
 69     static void merge_part(int lower,int mid, int higher){
 70
 71     for(int i=lower; i<=higher ;i++)
 72         {
 73
 74         temp[i] = arr [i];
 75
 76         }// end for
 77
 78     int i= lower;
 79     int j= mid+1;
 80     int k=lower;
 81
 82     while ( i<=mid           &&        j<=higher   )
 83
 84              {
 85         if(temp[i]<=temp[j])
 86         {
 87              arr[k]=temp[i];
 88              i++;
 89         }
 90         else
 91         {
 92              arr[k]=temp[j];
 93              j++;
 94         }
 95
 96         k++;
 97
 98         } // end while
 99
100     while ( i<=mid       )
101         {
102
103         arr[k]=temp[i];
104         k++;
105         i++;
106         } // end while
107
108
109         }// end method merge_part
110
111     // print method
112      static void print1(int [] a)
113      {
114          prepare_for_sort(a);
115          System.out.println( "after sorting "          );
116             System.out.println("");
117
118                for(int w = 0 ; w< arr.length ; w++)
119
120                System.out.print(      "a["+(w)+"]"+ "=" + arr[w] +"   " );
121
122
123     }
124 }
                                          Page 2
      Merg_sort.java
125
          Page 3