这是我的Merge Sort实现,它没有对给定的数组进行排序:每当我尝试运行它时,我得到这个输出:
[I @ 58c3d9ac
为什么我会看到这个?我找不到问题。
public static int[] mergeSort(int[] arr, int start, int end){
if (end-start>1){
int middle = start + (end-start) /2;
return merges(mergeSort(arr,start,end), mergeSort(arr,start,end));
}
else{
int[]result = new int[end-start];
for(int i=0; i<end-start; i++)
result[i] = arr[start+i];
return result;
}
}
public static int[] merges(int[]arr1,int[]arr2){
int[] result = new int[arr1.length + arr2.length];
int outPoint=0;
int arr1Point=0;
int arr2Point=0;
while(outPoint<result.length){
if(arr1Point >= arr1.length)
result[outPoint++] = arr2[arr2Point++];
else if (arr2Point >= arr2.length)
result[outPoint++] = arr1[arr1Point++];
else if (arr1[arr1Point] <= arr2[arr2Point])
result[outPoint++] = arr1[arr1Point++];
else
result[outPoint++] = arr2[arr2Point++];
}
return result;
}
}
答案 0 :(得分:1)
尝试打印结果如下:
for (int i : result) {
System.out.println(i);
}
答案 1 :(得分:0)
告诉我们您的主要方法。这看起来像数组的toString()输出。您需要遍历数组的内容并打印出每个元素。或者使用下面评论中的方法。