【问题标题】:array index out of bounds exception in this merge sort problem [duplicate]此合并排序问题中的数组索引越界异常[重复]
【发布时间】:2021-10-10 14:21:41
【问题描述】:

我正在练习合并排序。这是我遇到的问题,它显示数组索引越界,我检查了 for 循环并用

public class MergeSortProblem {
    
    public static void merge(int[] arr, int[] res, int low, int mid, int high) {
        
        int i = low, k= low, j=mid+1;
        
        while(i<=mid && j<=high) {
            
            if(arr[i] <= arr[j]) {
                res[k++] = arr[i++];
            }
            else {
                res[k++] = arr[j++];
            }
        }
        
        while(i<=mid) {
            res[k++] = arr[i++];
        }
        
        while(j<=high) {
            res[k++] = arr[j++];
        }
        
        for(i =low; i<=high; i++ ) {
            
            arr[i] = res[k];
            
        }
        
    }
    
    public static void divideArray(int[] arr, int[] res, int low, int high) {
        
        while(low == high) {
            return;
        }
        
        int mid = (low + high)/2 ;
        
        divideArray(arr, res, low,mid);
        divideArray(arr,res, mid+1, high);
        
        merge(arr,res,low,mid,high);
    }
    
    public static void main(String[] args) {
        
        int[] array = {6,10,5,7,6,8,3,80};
        
        int size = array.length;
        
        int start = 0;
        
        int[] result = {};
        
        divideArray(array,result,start,size);
    }
}

为什么我的数组索引越界异常?

【问题讨论】:

标签: java sorting mergesort


【解决方案1】:
for(i =low; i<=high; i++ ) {             
     arr[i] = res[k];               
}

通过查看您的代码,这将返回一个数组越界异常。发生这种情况是因为high 设置为数组长度8,并且由于 array.length 时循环数组时只使用

我建议查看Geeks For Geeks。他们有很多常见算法的例子,比如归并排序。

【讨论】:

    猜你喜欢
    • 2017-03-22
    • 2015-06-28
    • 2021-06-16
    • 1970-01-01
    • 2015-06-13
    • 2013-12-21
    • 2019-05-13
    • 2013-03-05
    • 1970-01-01
    相关资源
    最近更新 更多