Сортировка визуализации с помощью Quick Sort - PullRequest
0 голосов
/ 29 мая 2020

Доброго времени суток всем.

У меня небольшая проблема с перерисовкой моего алгоритма быстрой сортировки. Я уже тестировал алгоритм внутри другого файла, и он отлично работает. Проблема здесь в том, что я хочу его перекрасить. Это работает только для первых 10 итераций (меньше или больше). Я использую Java Swing.

Метод, позволяющий визуализировать сортировку (это правильно)

@Override
public void paintComponent(Graphics g) {
    super.paintComponent(g);

    // Background nero
    this.setBackground(Color.BLACK);

    for(int i=0; i<SortingPanel.array.length; i++) {
        // Imposto il colore dei rettangoli 
        g.setColor(Color.WHITE);

        // Altezza dei rettangoli
        int height = SortingPanel.array[i] * Options.RECTANGLE_HEIGHT;

        // Posizione sull'asse delle ascisse
        int xPosition = i * Options.RECTANGLE_WIDTH;

        // Posizione sull'asse delle ordinate
        int yPosition = Options.FRAME_HEIGHT - height;

        // Coloro il rettangolo
        g.fillRect(xPosition, yPosition, Options.RECTANGLE_WIDTH, height);
    }
}

Быстрая сортировка

private int partition(int[] arr, int low, int high) throws InterruptedException {
    int pivot = arr[high];
    int left = low;

    for(int i=low; i<high; i++) {
        if(arr[i] < pivot) {
            repaint();
            Thread.sleep(1);
            ArrayUtilities.swap(array, i, high);
            left++;
        }
    }

    repaint();
    Thread.sleep(1);
    ArrayUtilities.swap(array, high, left);

    return left;
}

private void quicksort(int[] arr, int low, int high) throws InterruptedException {
    if(low < high) {
        int pi = partition(arr, low, high);

        quicksort(arr, low, pi);
        quicksort(arr, pi+1, high);
    }
}
...