У меня есть существующий код, для которого мне нужно добавить счетчик обмена и сравнения. На данный момент я считаю, что подсчеты у меня правильные, однако я не могу заставить вывод не отображать цикл каждого обмена.
public void mergeSort(int[] a, int howMany) {
if (a.length >= 2) {
// split array into two halves
int[] left = Arrays.copyOfRange(a, 0, a.length/2);
int[] right = Arrays.copyOfRange(a, a.length/2, a.length);
// sort the two halves
mergeSort(left,howMany);
mergeSort(right, howMany);
// merge the sorted halves into a sorted whole
merge(a, left, right);
}
}
// Merges the left/right elements into a sorted result.
// Precondition: left/right are sorted
public static void merge(int[] result, int[] left,
int[] right) {
int i1 = 0; // index into left array
int i2 = 0; // index into right array
int compCount = 0;
int swapCount = 0;
for (int i = 0; i < result.length; i++) {
compCount++;
if (i2 >= right.length ||
(i1 < left.length && left[i1]
Подробнее здесь: https://stackoverflow.com/questions/299 ... d-compares
Сортировка слиянием подсчитывает количество свопов и сравнивает ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение