Я сделал слияние, которое объединяет массив из трех частей вместо двух, чтобы отсортировать его, и я написал некоторый код для проверки моего слияния, если он работает правильно. Вот код для проверки:Код отладки/тестирования двух массивов
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 целых чисел и заполнить массив случайных чисел, а затем сохранить этот массив во временном массиве, после такого использования my mergesort в исходном массиве и использовать метод Arrays.sort()
для временного массива, тогда, если два массива равны, напечатайте YES или иначе выйдите из цикла while.
К настоящему времени он не сломался из цикла while и указывает, что мой алгоритм правильный, поэтому я спрашиваю, правильно ли я сделал это и правильно написал тестовый код.
EDIT: Это печатает ДА постоянно, не нарушая из цикла, так что я считаю, что это работает, но я прошу, чтобы я мог быть уверен, что
Если это не печать 'YES' или окончание, то это означает, что в вашей функции' mergesort() 'есть некоторый сот бесконечного цикла, вам может потребоваться опубликовать это, если вы хотите получить помощь по этой проблеме , – 101100
no it is print YES постоянно –
Единственный способ, которым заканчивается ваш цикл, когда он выходит из цикла, и единственный раз, когда это происходит, когда слияние сортируется. Вы можете изменить цикл на подсчитанный цикл, а затем он будет проверять только определенное количество случайных массивов, это то, что вы хотите? – 101100