Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
索引越界Java合并排序?_Java_Arrays_Sorting_Indexoutofboundsexception_Mergesort - Fatal编程技术网

索引越界Java合并排序?

索引越界Java合并排序?,java,arrays,sorting,indexoutofboundsexception,mergesort,Java,Arrays,Sorting,Indexoutofboundsexception,Mergesort,我正在研究一种合并排序算法。以下是我到目前为止所写的内容。问题是,当我尝试运行它以查看它是否工作时,我在用注释标记的if语句上得到了索引越界错误 为什么我在评论旁边的行上的索引超出了范围? 我知道这个错误的意思,但我无法解释为什么它超出了界限 公共类合并排序{ 公共静态整型合并排序(整型[]列表1,整型[]列表2){ int[]list3=新int[list1.length+list2.length]; int smallest1=list1[0]; int smallest2=list2[0]

我正在研究一种合并排序算法。以下是我到目前为止所写的内容。问题是,当我尝试运行它以查看它是否工作时,我在用注释标记的if语句上得到了索引越界错误

为什么我在评论旁边的行上的索引超出了范围?

我知道这个错误的意思,但我无法解释为什么它超出了界限

公共类合并排序{
公共静态整型合并排序(整型[]列表1,整型[]列表2){
int[]list3=新int[list1.length+list2.length];
int smallest1=list1[0];
int smallest2=list2[0];
int位置1=0;
int位置2=0;
对于(int i=0;i

  • 这是因为for循环条件是索引从0开始运行,这意味着当list1.length=5时,索引可以是0到4 改变

    for(int j=0;j
    
    public class MergeSort {
    
        public static int mergeSort(int[] list1, int[] list2) {
            int[] list3 = new int[list1.length + list2.length];
            int smallest1 = list1[0];
            int smallest2 = list2[0];
            int position1 = 0;
            int position2 = 0;
    
            for (int i = 0; i<list1.length + list2.length; i++) {
                    for (int j =0; j<= list1.length; j++) {
                        if (list1[j] < smallest1) { //here index out of bouds
                            smallest1 = list1[j];
                            System.out.print(list1[j]+"smallest value");
                            position1 = j;
                        }
                    }
                    for (int l =0; l<= list2.length; l++) {
                        if (list2[l] < smallest2) {
                            smallest2 = list2[l];
                            System.out.print(list2[l]+"smallest value");
                            position2 = l;
                        }
                    }
    
                    if (smallest1< smallest2) {
                        list3[i] = smallest1;
                    } else if (smallest2< smallest1) {
                        list3[i] = smallest2;
                    }
            }
            //print the array
            for (int l =0; l<= list2.length; l++) {
                System.out.print("new array 3" + list3[l]);
            }
            return 1;
        }
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    
            int[] list1 = {17, 22, 35, 42, 60};
            int[] list2 = {9, 14, 66};
            int[] list3;
    
            mergeSort(list1, list2);
        }
    
    }   
    
    for (int j =0; j<= list1.length; j++)
    
    for (int j =0; j < list1.length; j++)