Как подсчитать количество свопов и сравнить с помощью быстрой сортировки - PullRequest
0 голосов
/ 08 января 2019

Итак, этот фрагмент кода является классом, который я использую для сортировки файла, содержащего список чисел. Кажется, все работает, за исключением того, что у меня проблемы с программой, отображающей количество обменов и сравнений.

public class IntQuickSort {

    private static void swap(int array[], int a, int b) {
        int temp;

        temp = array[a];
        array[a] = array[b];
        array[b] = temp;
    }

    public static void quicksort(int array[], int start, int end) {
        int pivotPoint;

        if (start < end) {
            pivotPoint = partition(array, start, end);
            quicksort(array, start, pivotPoint - 1);
            quicksort(array, pivotPoint + 1, end);
        }

    }

    private static int partition(int array[], int start, int end) {
        int pivotValue;
        int pivotIndex;
        int mid;

        int swapAmount = 0;
        int compare = 0;

        mid = (start + end) / 2;

        swap(array, start, mid);
        pivotIndex = start;
        pivotValue = array[start];

        for (int scan = start + 1; scan <= end; scan++) {
            compare++;
            if (array[scan] < pivotValue) {
                pivotIndex++;
                swap(array, pivotIndex, scan);
                swapAmount++;
            }


        }

        swap(array, start, pivotIndex);

        System.out.println("Quick sort");
        System.out.println("Comparisons " + compare);
        System.out.println("Swaps " + swapAmount);

        return pivotIndex;
    }
}

Таким образом, подкачка и сравнения в настоящее время находятся в разделе разделов кода. Однако перестановки и сравнения, кажется, зацикливаются, когда я пытаюсь их отобразить, и они не сохраняют свои значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...