算法-java代码实现归并排序

 


归并排序

对于一个int数组,请编写一个归并排序算法,对数组元素排序。

给定一个int数组A及数组的大小n,请返回排序后的数组。

测试样例:
[1,2,3,5,2,3],6
[1,2,2,3,3,5]
 
 
1
import java.util.*;
2

3
public class MergeSort {
4
    public int[] mergeSort(int[] A, int n) {
5
        int firstIndex = 0;
6
        int lastIndext = n-1;
7
        return mergeSort(A, firstIndex,lastIndext);
8
    }
9
    public int[] mergeSort(int[] A, int firstIndex, int lastIndex) {
10
        int mid = firstIndex + (lastIndex - firstIndex)/2;
11
        if(firstIndex < lastIndex){
12
            mergeSort(A, firstIndex,mid);
13
            mergeSort(A, mid+1,lastIndex);
14
            mergeArray(A,firstIndex,mid,lastIndex);
15
        }
16
        return A;
17
    }
18
    public void mergeArray(int[] A, int firstIndex, int mid, int lastIndex){
19
        int[] temp = new int[lastIndex - firstIndex + 1];
20
        int k = 0;
21
        int i = firstIndex, m = mid;
22
        int j = mid + 1, n = lastIndex;
23
        while(i <= m && j <= n){
24
            if(A[i] > A[j]) {
25
                temp[k++] = A[j++];
26
            }
27
            else {
28
                temp[k++] = A[i++]; 
29
            }
30
        }
31
        while(i <= m){
32
            temp[k++] = A[i++];
33
        }
34
        while(j <= n){
35
            temp[k++] = A[j++];
36
        }
37
        for(int t=0; t<temp.length;){
38
            A[firstIndex++] = temp[t++];
39
        }
40
    }
41
}
 
 
您的代码已保存
答案正确:恭喜!您提交的程序通过了所有的测试用例
 
原文地址:https://www.cnblogs.com/haozhengfei/p/9d526442a27a41a47b0284e0be0fcbc2.html