合并排序在java中的实现
我在10^5左右的一个非常整数的索引数组上实现了一个emerge排序。我知道java中有内置的sort命令,但我想自己实现。输出数组未排序。请查找我错在哪里?合并排序在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
代码
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在进行更改后是否重新编译了代码?