这是我在java中的合并排序实现,我没有得到排序输出。对于排序哪种排序是最佳合并或快速排序。 代码:
public void sort(ArrayList<Integer> finalarray)
{
if(finalarray.size()<2) return;
int mid;
mid = finalarray.size()/2;
ArrayList<Integer> right = new ArrayList<>();
ArrayList<Integer> left = new ArrayList<>();
for(int i=0;i<mid;i++) left.add(finalarray.get(i));
for(int i=mid;i<finalarray.size();i++) right.add(finalarray.get(mid));
sort(left);
sort(right);
//System.out.println("Left" + left.size());
//System.exit(1);
int l=0 ,f=0, r=0;
while(l<left.size() && r<right.size()) {
if(right.get(r)>left.get(l)) {
finalarray.set(f, left.get(l));
l++;
} else {
finalarray.set(f, right.get(r));
r++;
}
f++;
}
while(l<left.size())
finalarray.set(f, left.get(l));
f++;
l++:
}
while( r<right.size()) {
finalarray.set(f, right.get(r));
f++;
r++:
}
}
}
最终输出不是排序数组,请帮我找出我犯错误的地方。打印的数组未分类
提前致谢
答案 0 :(得分:1)
在一个阵列耗尽后,你会迭代提醒,但它中有一个错误:
while(l<left.size() )
{
finalarray.set(f, right.get(l));
//^^^
f++;
l++:
}
您应该使用left
中的元素填充它,而不是来自right
。