Java 8 heeft een nieuwe methode parallelSort () geïntroduceerd in de klasse Arrays van het pakket java.util. Deze methode is geïntroduceerd om het parallel sorteren van array-elementen te ondersteunen.
Algoritme van parallel sorteren:
1. De gegeven array is verdeeld in de subarrays en de subarrays zijn verder verdeeld in hun subarrays, dit gebeurt totdat de subarray een minimale korreligheid bereikt.
2. De subarrays worden afzonderlijk gesorteerd op meerdere threads. De parallelle sortering gebruikt Fork / Join Framework voor het parallel sorteren van subarrays.
3. De gesorteerde subarrays worden samengevoegd.
Voordeel van parallel sorteren boven eenvoudig sorteren:
De methode parallelSort () maakt gebruik van het concept van multithreading , waardoor het veel sneller is in vergelijking met de normale soort wanneer er veel elementen zijn.
Voorbeeld 1: Sorteren van primitieve gegevenstypen met parallelle sortering
import java.util.Arrays; public class Voorbeeld { public static void main (String [] args) { int nummers [] = {22, 89, 1, 32, 19, 5}; // Parallelle sorteermethode voor het sorteren van int array Arrays.parallelSort (cijfers); // de te converteren array converteren en weergeven met forEach Arrays.stream (nummers) .forEach (n-> System.out.print (n + "")); } }
Output:
1 5 19 22 32 89
Referenties:
Java 8 - Parallelle sortering JavaDoc
Voorbeeld 2: Parallel Sorteer door de begin- en eindindex op te geven
We kunnen ook het begin en einde voor het sorteren opgeven, in dit geval wordt de subarray die begint bij de startindex en eindigt op de eindindex gesorteerd, de rest van de array wordt genegeerd en wordt niet gesorteerd.
import java.util.Arrays; public class Voorbeeld { public static void main (String [] args) { int nummers [] = {22, 89, 1, 32, 19, 5}; / * De begin- en eindindex opgeven. De startindex is * 1 hier en de eindindex is 5. wat de elementen betekent * vanaf index 1 tot index 5 zou worden gesorteerd. * / Arrays.parallelSort (nummers, 1, 5); // de te converteren array converteren en weergeven met forEach Arrays.stream (nummers) .forEach (n-> System.out.print (n + ""));} }
Output:
22 1 19 32 89 5
Laat een reactie achter