【问题标题】:Merge Sort Out of Bound Exception In Java [duplicate]Java中的合并排序越界异常[重复]
【发布时间】:2021-06-16 07:55:49
【问题描述】:

在我的第二个 for 循环中出现错误。关于我做错了什么有什么建议吗?也许我没有使数组足够大?

private static void mergeSort(int length, int[] arr) {
    if (length>1)
    {
        int h = (int) Math.floor(length/2);
        int m = length-h;
        int[] U= new int[h];
        int[] V=new int[m];

        for(int i=0; i<h; i++){
            U[i]=arr[i];
        }
        for(int i=h; i<length; i++){
            V[i]=arr[i];
        }
        mergeSort( h , U);
        mergeSort(m ,V);
        merge(h , m , U , V, arr);
    }

【问题讨论】:

标签: java merge mergesort


【解决方案1】:
    for(int i=h; i<length; i++){
        V[i]=arr[i];
    }

在分配 V 之后,您期望 V 的“长度”小于该长度。

    int m = length-h;

    int[] V=new int[m];

但我赞同在 cmets 中的建议,即你学习一点调试技能。

【讨论】:

    猜你喜欢
    • 2014-12-14
    • 2021-10-10
    • 2019-05-13
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多