Как я могу структурировать эту быструю сортировку, чтобы прекратить быструю сортировку при определенном значении индекса и начать сортировку выбора? - PullRequest
0 голосов
/ 02 декабря 2011

У меня есть быстрая сортировка, которая работает, и сортировка выбора, которая также работает - я хочу отсортировать int[] случайных чисел с быстрой сортировкой до array.length = 1, а затем для этой последней сортировки выбора вызова элемента. Я знаю, что мне нужно иметь условие, которое проверяет array.length, а когда length = 1, тогда возвращает selectionSort() Я не уверен, как структурировать его в рекурсивных вызовах в пределах quickSort(). Вот два моих метода сортировки:

QuickSort:

public void quickSort(int array[], int start, int end) {
    int i = start; // index val of left-to-right scan
    int k = end; // index val of right-to-left scan

    if (end - start >= 1){
        PIVOT = array[start]; 
        while (k > i){
            while (array[i] <= PIVOT && i <= end && k > i)
                i++; 
            while (array[k] > PIVOT && k >= start && k >= i)
                k--;
            if (k > i) 
                swap(array, i, k); 
        }
        swap(array, start, k); 
        quickSort(array, start, k - 1); 
        System.out.println(k);
        quickSort(array, k + 1, end); 

    }
    return;
}

Выбор сортировки:

public void selectionSort(int[] nums) {
    //nums[0] = array[0];
    System.out.println(nums.length);
    for (int i = 0; i < (nums.length - 1); i++) {
        for (int j = i + 1; j < nums.length; j++) {
            if (nums[i] > nums[j]) {
                int temp = nums[i];
                nums[i] = nums[j];
                nums[j] = temp;
            }
        }
    }
}

1 Ответ

1 голос
/ 02 декабря 2011

Вы уже почти делаете это.С помощью этой строки end - start вы получите длину.Если эта длина меньше вашей SelectionSortThreshold, выполните сортировку вставки только для текущей длины .Это означает изменение вашей подпрограммы selectionSort для принятия параметров start и end, чтобы вы могли сортировать выборки только небольшую часть массива.

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