0
私は文字列のarraylistsのマージソートアルゴリズムを実装しようとしていますが、私はarraylistの順序をねじっているバグを見つけることができないようです。arraylistマージソートのバグを見つけるのに役立つ
private static void sort(java.util.ArrayList<String> a)
{
// End recursion
if (a.size() < 2)
{
return;
}
int mid = a.size()/2;
java.util.ArrayList<String> left = new java.util.ArrayList<String>();
int i;
for (i = 0; i < mid; i++)
{
left.add(a.remove(i));
}
java.util.ArrayList<String> right = new java.util.ArrayList<String>();
// Copy the second half to the "right"
for (; i < a.size(); i++)
{
right.add(a.remove(i));
}
sort(left);
sort(right);
merge(a, left, right);
}
private static void merge(java.util.ArrayList<String> result, java.util.ArrayList<String> left,java.util.ArrayList<String> right)
{
int i, l, r;
i = l = r = 0;
while (l < left.size() && r < right.size())
{
if ((left.get(l)).compareTo(right.get(r)) < 0)
{
result.add(left.get(l));
l++;
}
else
{
result.add(right.get(r));
r++;
}
i++;
}
while (l < left.size())
{
result.add(left.get(l));
l++;
i++;
}
// Append rest of the values in the right half, if any...
while (r < right.size())
{
result.add(right.get(r));
r++;
i++;
}
}
これは宿題のように見えますが、あなたが試したことや問題が何であるか教えてください... – tonio
実際に私の声明を読んで、問題が何であるか教えてください。私は「arraylistの命令を揺らしているバグを見つけることができない」と言う。言い換えれば、配列リストが正しく注文されていないということです。その配列の文字列のリストでは、明らかに文字列はアルファベット順ではありません。また、新しいポスターごとに宿題のように見えると言います。とにかく私は何を試してみたいとお伝えしたいですか?比較的新しいプログラマーであるので、多くのことが起こってからiveが何を試してきたのかは分かりません。間違っています。 –
文字列の配列をソートするために、Collections.sortを使用するか、または割り当てがマージソートを実装するように指定されていないか、あなたのロールを張る正当な理由がない限り、重複を削除するのが得意なら、自分の並べ替え。あなたは言及しなかった。 – tonio