题目:给定你一个长度为 n 的整数数列,请你使用归并排序对这个数列按照从小到大进行排序并将排好序的数列按顺序输出。
以下是模板:(y总笔记)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
static int n;
static void merge_sort(int[] arr,int l,int r){
if (l>=r){
return;
}
int mid=l+r>>1;
merge_sort(arr,l,mid);
merge_sort(arr,mid+1,r);
int[] temp = 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]){
temp[k++]=arr[i++];
}else{
temp[k++]=arr[j++];
}
}
while (i<=mid){//如果前半个部分没有用完,则将剩余的放进去
temp[k++]=arr[i++];
}
while (j<=r){
temp[k++]=arr[j++];//同上
}
for (i=l,j=0;i<=r;i++,j++) {//把存储的值再赋值回去
arr[i]=temp[j];
}
}
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] num = br.readLine().split(" ");
n=Integer.parseInt(num[0]);
String[] str = br.readLine().split(" ");
int[] arr= new int[n];
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++) {
System.out.print(arr[i]+" ");
}
}
}