import java.util.*;
public class MergeSort {
public static void main(String[] shan){
while(true){
Scanner input=new Scanner(System.in);
int n=input.nextInt();
int[] arr=new int[n];
for(int i=0;i<n;i++)
arr[i]=input.nextInt();
Merge_sort(arr,0,arr.length-1);
for(int i=0;i<arr.length;i++)
System.out.printf("%d ", arr[i]);
}
}
public static void Merge_sort(int[] arr,int low,int high){
if(low<high){
int mid=(low+high)/2;
Merge_sort(arr,low,mid);
Merge_sort(arr,mid+1,high);
Merge(arr,low,mid,high);
}
}
public static void Merge(int[] arr,int l,int mid,int h){
int len=arr.length;
int[] b=new int[len];
for(int i=0;i<len;i++)
b[i]=arr[i];
int st=l;
int Midtem=mid+1;
while(st<=mid && Midtem<=h){
if(b[st]>=b[Midtem])
arr[l++]=b[Midtem++];
else
arr[l++]=b[st++];
}
while(st<=mid){
arr[l++]=b[st++];
}
while(Midtem<=h){
arr[l++]=b[Midtem++];
}
}
}
No comments:
Post a Comment