无法在Java上运行合并排序

时间:2013-11-26 20:52:49

标签: java arrays mergesort

这是我的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;
    }

}

2 个答案:

答案 0 :(得分:1)

尝试打印结果如下:

for (int i : result) {
System.out.println(i);
}

答案 1 :(得分:0)

告诉我们您的主要方法。这看起来像数组的toString()输出。您需要遍历数组的内容并打印出每个元素。或者使用下面评论中的方法。