@Den4_x

Что тут не так (алгоритм быстрой сортировки)?

package practice;

import java.util.Arrays;
import java.util.Random;

public class Practice {

    public static void main(String[] args) {
        int[] array = {1, 0, 5, 100, 7, 32, 8, 40, 9, 1, 10};
        System.out.println(Arrays.toString(array));

        QuickSort.quickSort(array, 0, array.length - 1);
        System.out.println(Arrays.toString(array));
    }
}

class QuickSort {

    public static void quickSort(int[] array, int low, int high) {
        Random rand = new Random();

        int L = low;
        int R = high;
        int diff = high - low;

        //Взяли произвольнй эл-нт из рандомного index-а данного массива
        int separator = array[low + rand.nextInt(diff + 1)];//[low;high] на ОТРЕЗКЕ!!!

        //Параметры введены корректно?
        if (low >= high) {
            return;
        }

        while (L <= R) {
            while (array[L] < separator) {
                ++L;
            }
            while (array[R] > separator) {
                --R;
            }

            if (L <= R) {
                swap(array, L, R);
                ++L;
                --R;
            }

        }

        quickSort(array, low, R);
        quickSort(array, L, high);
    }

    public static void swap(int[] array, int x, int y) {
        int tmp = array[x];
        array[x] = array[y];
        array[y] = tmp;
    }
}


Работает 1 из 10 только вариций работает, а все отсальное пишет ошибка, почему?
  • Вопрос задан
  • 206 просмотров
Решения вопроса 1
проверка low <= high должна быть в начале
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы