Быстрая сортировка с JavaParallel - PullRequest
1 голос
/ 14 мая 2019

Мне нужно знать, как распараллелить следующий код quickSort sorting algorithm, используя JavaParallel, или я рекомендую некоторые горячие точки алгоритма для его распараллеливания

public void quickSort (ArrayList<ParElementoValor> paresValores, int begin, int end){

    if (begin < end) {

            int partitionIndex = partition(paresValores, begin, end);
            quickSort(paresValores, begin, partitionIndex-1);
            quickSort(paresValores, partitionIndex+1, end);
                      }  
    }

private int partition(ArrayList<ParElementoValor> paresValores, int begin, int end) {
        ParElementoValor pivot = paresValores.get(end);

        int i = (begin-1);

        for (int j = begin; j < end; j++) {
            if (paresValores.get(j).getSuma() > pivot.getSuma()) {
                i++;

                ParElementoValor swapTemp = paresValores.get(i);
                paresValores.set(i, paresValores.get(j));
                paresValores.set(j, swapTemp);

                                                                  }
                                           }

        ParElementoValor swapTemp = paresValores.get(i+1);
         paresValores.set(i+1, paresValores.get(end));
         paresValores.set(end, swapTemp);

        return i+1;
    }

1 Ответ

0 голосов
/ 14 мая 2019

Вы можете использовать ForkJoinPool, что точно соответствует такого рода проблемам

Есть множество примеров, например,

https://gist.github.com/EliaRohana/25b924048d990c5358313d18daf8f491

http://www.java2s.com/Tutorials/Java/Java_Thread_How_to/Concurrent/Do_quick_sort_with_ForkJoinPool_and_RecursiveAction.htm

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