76 lines
2.4 KiB
Java
76 lines
2.4 KiB
Java
|
package Sorts;
|
||
|
import java.util.Arrays;
|
||
|
import java.util.*;
|
||
|
|
||
|
/*This code implements the mergeSort algorithm without extra space
|
||
|
For understanding about mergesort visit :https://www.geeksforgeeks.org/merge-sort/
|
||
|
*/
|
||
|
public class MergeSortNoExtraSpace {
|
||
|
public static void call_merge_sort(int a[],int n)
|
||
|
{
|
||
|
int maxele = Arrays.stream(a).max().getAsInt() + 1;
|
||
|
merge_sort(a,0,n-1,maxele);
|
||
|
}
|
||
|
public static void merge_sort(int a[],int start , int end,int maxele){ //this function divides the array into 2 halves
|
||
|
|
||
|
if(start<end){
|
||
|
int mid = (start +end)/2;
|
||
|
merge_sort(a, start,mid,maxele);
|
||
|
merge_sort(a,mid+1,end,maxele);
|
||
|
implement_merge_sort(a,start,mid,end,maxele);
|
||
|
|
||
|
}
|
||
|
}
|
||
|
public static void implement_merge_sort(int a[], int start , int mid , int end,int maxele){ //implementation of mergesort
|
||
|
int i=start;
|
||
|
int j=mid+1;
|
||
|
int k =start;
|
||
|
while (i<=mid && j<=end){
|
||
|
if(a[i]%maxele<=a[j]%maxele){
|
||
|
a[k] = a[k] + (a[i]
|
||
|
% maxele) * maxele;
|
||
|
k++;
|
||
|
i++;
|
||
|
}
|
||
|
else{
|
||
|
a[k] = a[k] + (a[j]
|
||
|
% maxele) * maxele;
|
||
|
k++;
|
||
|
j++;
|
||
|
}
|
||
|
}
|
||
|
while(i<=mid){
|
||
|
a[k] = a[k] + (a[i]
|
||
|
% maxele) * maxele;
|
||
|
k++;
|
||
|
i++;
|
||
|
}
|
||
|
while(j<=end){
|
||
|
a[k] = a[k] + (a[j]
|
||
|
% maxele) * maxele;
|
||
|
k++;
|
||
|
j++;
|
||
|
}
|
||
|
for(i=start;i<=end;i++)
|
||
|
{
|
||
|
a[i] = a[i] / maxele;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
public static void main(String args[]) {
|
||
|
Scanner inp=new Scanner(System.in);
|
||
|
System.out.println("Enter array size");
|
||
|
int n=inp.nextInt();
|
||
|
int a[]=new int[n];
|
||
|
System.out.println("Enter array elements");
|
||
|
for(int i=0;i<n;i++)
|
||
|
{
|
||
|
a[i]=inp.nextInt();
|
||
|
}
|
||
|
call_merge_sort(a,n);
|
||
|
for(int i=0;i<a.length;i++){
|
||
|
System.out.print(a[i]+" ");
|
||
|
}
|
||
|
}
|
||
|
}
|