配列をソートするために2つではなく3つの部分にマージソートするマージソートを作成し、マージソートが正しく機能するかどうかをテストするコードを作成しました。テストのコードは次のとおりです。
while (true){
Random rand = new Random();
int[] randArray = new int[rand.nextInt(2000)];
for (int i = 0; i < randArray.length; i++) {
randArray[i] = rand.nextInt();
}
int[] temporary = new int[randArray.length];
System.arraycopy(randArray, 0, temporary, 0, randArray.length);
mergesort(randArray);
Arrays.sort(temporary);
if (Arrays.equals(randArray, temporary)){
System.out.println("YES");
} else {
break;
}
}
}
私がやっていることは、毎回最大2000の整数の配列を作成し、その配列をランダムな整数で埋めてから、その配列を一時配列に格納します。その後、元の配列でマージソートを使用しArrays.sort()
、一時配列のメソッドを使用します。次に、2つの配列が等しい場合は、YESを出力します。そうでない場合は、whileループから抜けます。
今のところ、whileループから壊れておらず、アルゴリズムが正しいことを示しているので、ここで実行してテストコードを正しく記述したかどうかを尋ねています。
編集:それはループを中断することなく常にYESを印刷しているので、私はそれが機能していると信じていますが、私は確信できるように求めています