归并排序
对于一个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
}
您的代码已保存
答案正确:恭喜!您提交的程序通过了所有的测试用例
答案正确:恭喜!您提交的程序通过了所有的测试用例