AcWing 787. 归并排序
原题链接
简单
作者:
nomain.
,
2025-04-14 21:38:04
· 山东
,
所有人可见
,
阅读 1
import java.util.*;
import java.io.*;
public class Main{
public static int n ;
public static int N = 100010;
public static int a[] = new int[N];
public static void mergeSort(int arr[],int l,int r){
if(l >= r) return ;
int mid = l + r >> 1;
mergeSort(arr,l,mid);
mergeSort(arr,mid+1,r);
int tem[] = new int[r-l+1];
int k = 0;
int i = l;
int j = mid + 1;
while(i <= mid && j <= r){
if(arr[i] <= arr[j])
tem[k++] = arr[i++];
else
tem[k++] = arr[j++];
}
while(i <= mid)
tem[k++] = arr[i++];
while(j <= r)
tem[k++] = arr[j++];
for(i = l,j = 0;i <= r;i ++,j ++)
arr[i] = tem[j];
}
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String str = br.readLine();
n = Integer.parseInt(str);
String[] s = br.readLine().split(" ");
for(int i = 0;i < n;i ++) a[i] = Integer.parseInt(s[i]);
mergeSort(a,0,n-1);
for(int i = 0;i < n;i ++){
bw.write(String.valueOf(a[i]));
bw.write(" ");
}
bw.close();
}
}