c++
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=100010;
int arr[N];
int n;
void merge(int l,int r,int mid){
int temp[N];
int left=l,right=mid+1,k=0;
while(left<=mid&&right<=r) temp[k++]=arr[left]<arr[right]?arr[left++]:arr[right++];
while(left<=mid) temp[k++]=arr[left++];
while(right<=r) temp[k++]=arr[right++];
for(int i(l),k(0);i<=r;i++) arr[i]=temp[k++];
}
void merge_sort(int l,int r){
if(l>=r) return;
int mid=(l+r)/2;
merge_sort(l,mid);
merge_sort(mid+1,r);
merge(l,r,mid);
}
int main(){
scanf("%d", &n);
for(int i(0);i<n;i++) scanf("%d",&arr[i]);
merge_sort(0,n-1);
for(int i(0);i<n;i++) printf("%d ",arr[i]);
printf("\n");
return 0;
}
java
import java.util.*;
import java.io.*;
public class Main{
public static void main(String[] args) throws Exception{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
PrintWriter pw=new PrintWriter(new OutputStreamWriter(System.out));
int n=Integer.parseInt(br.readLine());
int[] arr=new int[n];
String[] str=br.readLine().split(" ");
for(int i=0;i<n;i++) arr[i]=Integer.parseInt(str[i]);
merge_sort(arr,0,n-1);
for(int i=0;i<n;i++)pw.print(arr[i]+" ");
pw.println();
pw.flush();
}
public static void merge_sort(int[] arr,int l,int r){
if(l>=r) return;
int mid=(l+r)/2;
merge_sort(arr,l,mid);
merge_sort(arr,mid+1,r);
int[] temp=new int[r-l+1];
int i=l,j=mid+1,k=0;
while(i<=mid && j<=r) temp[k++]=arr[i]<arr[j]?arr[i++]:arr[j++];
while(i<=mid) temp[k++]=arr[i++];
while(j<=r) temp[k++]=arr[j++];
k=0;
for(int h=l;h<=r;) arr[h++]=temp[k++];
}
}
python
def merge_sort(lst):
if len(lst)<=1:
return lst
mid=len(lst)//2
left_lst=lst[:mid]
right_lst=lst[mid:]
left_lst=merge_sort(left_lst)
right_lst=merge_sort(right_lst)
temp=[]
i,j=0,0
while i<len(left_lst) and j<len(right_lst):
if(left_lst[i]<=right_lst[j]):
temp.append(left_lst[i])
i+=1
else:
temp.append(right_lst[j])
j+=1
while i<len(left_lst):
temp.append(left_lst[i])
i+=1
while j<len(right_lst):
temp.append(right_lst[j])
j+=1
idx=0
while idx<len(lst):
lst[idx]=temp[idx]
idx+=1
return lst
if __name__=="__main__":
n=int(input())
line=input()
lst=[int(i) for i in line.split()]
lst=merge_sort(lst)
for val in lst:
print(val,end=' ')