Added java implementation of merge sort (#22581)
This commit is contained in:
committed by
Randell Dawson
parent
63baf8ce20
commit
0c5b28e0e5
@ -252,3 +252,66 @@ temp = [None for _ in range(len(arr))]
|
|||||||
merge_sort(arr, 0, len(arr) - 1)
|
merge_sort(arr, 0, len(arr) - 1)
|
||||||
print(arr, inversions)
|
print(arr, inversions)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Implementation in Java
|
||||||
|
```java
|
||||||
|
public class mergesort {
|
||||||
|
|
||||||
|
public static int[] mergesort(int[] arr,int lo,int hi) {
|
||||||
|
|
||||||
|
if(lo==hi) {
|
||||||
|
int[] ba=new int[1];
|
||||||
|
ba[0]=arr[lo];
|
||||||
|
return ba;
|
||||||
|
}
|
||||||
|
|
||||||
|
int mid=(lo+hi)/2;
|
||||||
|
int arr1[]=mergesort(arr,lo,mid);
|
||||||
|
int arr2[]=mergesort(arr,mid+1,hi);
|
||||||
|
return merge(arr1,arr2);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int[] merge(int[] arr1,int[] arr2) {
|
||||||
|
int i=0,j=0,k=0;
|
||||||
|
int n=arr1.length;
|
||||||
|
int m=arr2.length;
|
||||||
|
int[] arr3=new int[m+n];
|
||||||
|
while(i<n && j<m) {
|
||||||
|
if(arr1[i]<arr2[j]) {
|
||||||
|
arr3[k]=arr1[i];
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
arr3[k]=arr2[j];
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
k++;
|
||||||
|
}
|
||||||
|
|
||||||
|
while(i<n) {
|
||||||
|
arr3[k]=arr1[i];
|
||||||
|
i++;
|
||||||
|
k++;
|
||||||
|
}
|
||||||
|
|
||||||
|
while(j<m) {
|
||||||
|
arr3[k]=arr2[j];
|
||||||
|
j++;
|
||||||
|
k++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return arr3;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
int arr[]= {2,9,8,3,6,4,10,7};
|
||||||
|
int[] so=mergesort(arr,0,arr.length-1);
|
||||||
|
for(int i=0;i<arr.length;i++)
|
||||||
|
System.out.print(so[i]+" ");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
Reference in New Issue
Block a user