Как я могу получить алгоритм сортировки слиянием, чтобы вернуть ArrayList целевых индексов для обмена? - PullRequest
0 голосов
/ 11 апреля 2019

Я пишу свой собственный визуализатор для алгоритмов сортировки, и я смог обойти некоторые проблемы, которые у меня были с таймером, с помощью алгоритмов, анализирующих ArrayList массивов int, которые содержат два значения, которые являются индексами, которые должны быть заменены,Это сработало для сортировки "Выбор", "Пузырь" и "Вставка", но мне нужно сделать это для сортировки слиянием и быстрой сортировкой, и я не знаю, как мне это сделать.

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

void merge(Spectrum colors, int l, int m, int r) {
    int[] arr = new int[colors.size()];
    for(int i = 0; i < arr.length; i++) {
        arr[i] = colors.get(i).getNum();
    }
    int n1 = m - l + 1;
    int n2 = r - m;
    int[] L = new int[n1];
    int[] R = new int[n2];
    for(int i = 0; i < n1; i++) {
        L[i] = arr[l + i];
    }
    for(int j = 0; j < n2; j++) {
        R[j] = arr[m + 1 + j];
    }
    int i = 0;
    int j = 0;
    int k = l;
    while(i < n1 && j < n2) {
        if(L[i] <= R[j]) {
            arr[k] = L[i];
            i++;
        }else {
            arr[k] = R[j];
            j++;
        }
        k++;
    }
    while(i < n1) {
        arr[k] = L[i];
        i++;
        k++;
    }
    while(j < n2) {
        arr[k] = R[j];
        j++;
        k++;
    }
}

Это то, что у меня есть для моего метода, который объединит подмассивы.То, что я делал, было то, что каждый раз, когда я переключаю два значения в любом спектре (который расширяет ArrayList из ColorIDs, другой класс, который расширяет цвета и имеет отдельные идентификаторы), я создаю новый массив, который будет содержать два индекса, которые я поменял местамии добавьте его в swapIndexes, который я затем использовал бы для запуска сортировки.

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

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