合并排序在java中的实现

合并排序在java中的实现,java,sorting,Java,Sorting,我在10^5左右的一个非常整数的索引数组上实现了一个emerge排序。我知道java中有内置的sort命令,但我想自己实现。输出数组未排序。请查找我错在哪里?代码 public void sort(ArrayList<Integer> finalarray) { if(finalarray.size()<2) return ; ArrayList<Integer> right = new Arr

我在10^5左右的一个非常整数的索引数组上实现了一个emerge排序。我知道java中有内置的sort命令,但我想自己实现。输出数组未排序。请查找我错在哪里?
代码

public void sort(ArrayList<Integer> finalarray)
        {   
            if(finalarray.size()<2) return ;

            ArrayList<Integer> right = new ArrayList<>();
            ArrayList<Integer> left = new ArrayList<>();
            int  mid = finalarray.size()/2;
            for(int i=0;i<mid;i++) left.add(finalarray.get(i));
            for(int j=mid;j<finalarray.size();j++) right.add(finalarray.get(j));


            sort(left);
            sort(right);
            int l=0, r=0 , m =0;
            while(l< left.size() && r< right.size())
            {

                  if(left.get(l)> right.get(r))
                  {
                      finalarray.set(m, right.get(r));
                      r++;
                  }
                  else
                  {
                      finalarray.set(m, left.get(l));
                      l++;
                  }
                  m++;
            }
            while(l< left.size())
            {
                 finalarray.set(m, left.get(l));
                 l++;
                 m++;

            }
             while(r< right.size())
            {
                 finalarray.set(m, right.get(r));
                 r++;
                 m++;

            }

        }

    }
public void排序(ArrayList finalarray)
{   

如果(finalarray.size(),我建议使用调试器

您可能想将if循环更改为while

while (l< left.size())
        {
             finalarray.set(m, left.get(l));
             l++;
             m++;

        }
while (r< right.size())
        {
             finalarray.set(m, right.get(r));
             r++;
             m++;

        }
while(l
嗨,在while循环下面,排序方法中应该还有两个while循环,而不是if


目前,如果您可以提供一个示例输出,以显示错误的确切位置,这将有助于加快理解问题的速度problem@kicker86输出数组不可用sorted@Singapore给我们举个例子(小)输入和输出示例错误。@如果要学习,请使用数组something@Singapore-我建议您使用调试器。如果您以前没有使用过调试器,现在是开始调试器的好时机。:@Singapore在进行更改后是否重新编译了代码?