Skip to content

Commit abe9392

Browse files
Add files via upload
1 parent 81dcf84 commit abe9392

File tree

1 file changed

+113
-0
lines changed

1 file changed

+113
-0
lines changed

MergeSort.java

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
import java.io.*;
2+
import java.util.*;
3+
class MergeSort{
4+
5+
Scanner sc = new Scanner(System.in);
6+
7+
public static void main(String args[])throws IOException{
8+
MergeSort ob = new MergeSort();
9+
int n = ob.InputSizeOfArray();
10+
if(n==-1) return;
11+
int arr[] = new int[n];
12+
int flag = ob.InputArrayElements(n,arr);
13+
if(flag==-1) return;
14+
long sT = System.nanoTime();
15+
//ob.DisplayArrayElements(n,arr);
16+
ob.MergeSortRoutine(n,arr);
17+
//System.out.println("The Sorted Array is:");
18+
//ob.DisplayArrayElements(n,arr);
19+
long eT = System.nanoTime();
20+
float time = eT-sT;
21+
System.out.println("Elapsed Time: "+(eT-sT)+"ns "+(eT-sT)/1000+"us "+(eT-sT)/100000+"ms "+(time)/1000000000+"s");
22+
}
23+
24+
public void MergeSortRoutine(int n, int arr[]){
25+
int lo = 0;
26+
int hi = n-1;
27+
if(lo<hi){
28+
int mid = (int)(Math.floor((lo+hi)/2));
29+
int LArr[] = new int[mid+1];
30+
int RArr[] = new int[n-(mid+1)];
31+
PopulateArray(LArr,RArr,arr,mid+1);
32+
33+
MergeSortRoutine(mid+1,LArr);
34+
MergeSortRoutine(n-(mid+1),RArr);
35+
36+
Merge(LArr,RArr,arr);
37+
38+
}
39+
}
40+
41+
public void Merge(int LArr[], int RArr[], int newArr[]){
42+
int i=0,j=0,k=0;
43+
while(i < LArr.length && j < RArr.length){
44+
if(LArr[i]<RArr[j]){
45+
newArr[k]=LArr[i];
46+
i++;
47+
}
48+
else{
49+
newArr[k]=RArr[j];
50+
j++;
51+
}
52+
k++;
53+
}
54+
while(i<LArr.length){
55+
newArr[k]=LArr[i];
56+
i++;
57+
k++;
58+
}
59+
while(j<RArr.length){
60+
newArr[k]=RArr[j];
61+
j++;
62+
k++;
63+
}
64+
}
65+
66+
public void PopulateArray(int LArr[], int RArr[], int arr[],int mid){
67+
for(int i=0;i<LArr.length;i++)
68+
LArr[i]=arr[i];
69+
for(int j=mid;j<arr.length;j++)
70+
RArr[j-mid]=arr[j];
71+
}
72+
73+
public int InputSizeOfArray(){
74+
System.out.print("\nEnter the size of the array: ");
75+
int n = sc.nextInt();
76+
if(n<=0){
77+
System.out.println("No elements in array. Exiting...");
78+
return -1;
79+
}
80+
return n;
81+
}
82+
83+
public int InputArrayElements(int n, int arr[]){
84+
85+
86+
for(int i=0;i<n;i++)
87+
arr[i]=(int)(100000*Math.random());
88+
return 0;
89+
90+
/*
91+
System.out.println("Enter "+n+" elements into the array");
92+
for(int i=0;i<n;i++){
93+
try{
94+
arr[i]=sc.nextInt();
95+
}
96+
catch(InputMismatchException e)
97+
{
98+
System.out.println("Result not an integer, exiting...");
99+
return -1;
100+
}
101+
}
102+
return 0;
103+
*/
104+
}
105+
106+
public void DisplayArrayElements(int n, int arr[]){
107+
for(int i=0;i<n;i++)
108+
System.out.print(arr[i]+" ");
109+
System.out.println();
110+
}
111+
112+
113+
}

0 commit comments

Comments
 (0)