免責事項:この記事はブロガーオリジナル記事ですが、許可ブロガーなく再生してはなりません。https://blog.csdn.net/kingslave1/article/details/84764907
public class MergeSortTest{
private void merge(int []arr,int i1,int j1,int i2,int j2) {
int k=i1<i2?i1:i2;
int []temp=new int[(j1-i1+1)+(j2-i2+1)];
int i3=0;
while(i1<=j1||i2<=j2) {
int a1=i1<=j1?arr[i1]:Integer.MAX_VALUE;
int a2=i2<=j2?arr[i2]:Integer.MAX_VALUE;
if(a1<a2) {
temp[i3++]=a1;
i1++;
}else {
temp[i3++]=a2;
i2++;
}
}
for(int i=0;i<temp.length;i++) {
arr[k+i]=temp[i];
}
}
public void mergeSort(int []arr) {
mergeSort(arr, 0, arr.length-1);
}
private void mergeSort(int []arr,int left,int right) {
if(left<right) {
int mid=(left+right)/2;
mergeSort(arr, left, mid);
mergeSort(arr, mid+1, right);
merge(arr, left, mid, mid+1, right);
}
}
public static void main(String[] args) {
int []arr= {3,6,8,7,5,1,4,9,2};
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
new SortableList().mergeSort(arr);
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
}
}