归并排序 (Java)
大一下学期学过半本数据结构,但可惜老师并没有讲过该内容,直到快大三的暑假,才抽时间去自学。
以下是自学后用java在IntelliJ IDEA中运行通过的代码,供读者参考
package 二零二零年暑假练习;
import java.util.Arrays;
import java.util.Scanner;
public class Merge_Sort {
public static void sort(int[] data,int start,int end){
if(end==start+1){
return;
}
int mid=start+(end-start)/2;
sort(data,start,mid);
sort(data,mid,end);
int i=start;
int j=mid;
int k=0;
int []temp = new int[end-start];
for(;i<mid&&j<end;){
if(data[i]>data[j]){
temp[k++]=data[i++];
}else{
temp[k++]=data[j++];
}
}
if(i<mid) {
while (i < mid) {
temp[k++] = data[i++];
}
}else{
while (j<end){
temp[k++]=data[j++];
}
}
for(int l=0;l<end-start;l++){
data[l+start]=temp[l];
}
}
public static void sort(int[] data){
sort(data,0,data.length);
}
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
System.out.println("The total number of numbers:");
int i,n = sc.nextInt();
int [] data = new int[n];
for(i=0;i<n;i++)
data[i]=sc.nextInt();
System.out.println("排序前:"+"\n"+Arrays.toString(data));
sort(data);
System.out.println("排序后:"+"\n"+Arrays.toString(data));
}
}
此外,查阅过的资料:归并排序Java讲解链接,讲解非常好。