Maison >Java >javaDidacticiel >Algorithmes de tri rapide en Java
Le tri rapide en Java, également connu sous le nom de tri par échange de partition, est un algorithme de tri diviser pour régner. Le tri rapide est un bon exemple d’algorithme qui utilise au mieux les caches du processeur en raison de sa nature de division pour mieux régner. L'algorithme de tri rapide est l'un des algorithmes de tri les plus utilisés, notamment pour trier de grandes listes, et la plupart des langages de programmation l'ont implémenté. L'algorithme Quicksort divise les données originales en deux parties : triées individuellement puis fusionnées pour produire des données triées.
Commencez votre cours de développement de logiciels libres
Développement Web, langages de programmation, tests de logiciels et autres
Considérons que le tableau {8, 6, 3, 4, 9, 2, 1, 7} doit être trié à l'aide du tri rapide.
1. Choisissez un élément appelé pivot dans le tableau. Généralement, l'élément médian est choisi comme pivot. Prenons 4 comme pivot.
2. Réorganisez le tableau en deux parties de telle sorte que les éléments inférieurs au pivot viennent avant le pivot et les éléments supérieurs au pivot apparaissent après le pivot. Les étapes suivantes sont suivies :
3. Appliquez récursivement les étapes 1 et 2 pour le sous-tableau gauche (tableau avec des éléments inférieurs au pivot) et pour le sous-tableau droit (tableau avec des éléments supérieurs au pivot). Si le tableau ne contient qu'un ou zéro élément, alors le tableau est considéré comme assorti.
Voici un programme Java pour trier un tableau d'entiers à l'aide d'un algorithme de tri rapide.
Code :
import java.lang.*; import java.util.*; public class Main { private int array[]; private int length; public void sort(int[] inputArrayArr) { if (inputArrayArr == null || inputArrayArr.length == 0) { return; } this.array = inputArrayArr; length = inputArrayArr.length; performQuickSort(0, length - 1); } private void performQuickSort(int lowerIndex, int higherIndex) { int i = lowerIndex; int j = higherIndex; // calculate pivot number // middle element taken as pivot int pivot = array[lowerIndex+(higherIndex-lowerIndex)/2]; // Divide into two subarrays while (i <= j) { /** * In each iteration, find an element from left side of the pivot which * is greater than the pivot value, and also find an element * From right side of the pivot which is less than the pivot value. Once the search * is complete, we exchange both elements. */ while (array[i] < pivot) { i++; } while (array[j] > pivot) { j--; } if (i <= j) { swapNumbers(i, j); //move index to next position on both sides i++; j--; } } // call performQuickSort() method recursively if (lowerIndex < j) performQuickSort(lowerIndex, j); if (i < higherIndex) performQuickSort(i, higherIndex); } private void swapNumbers(int i, int j) { int temp = array[i]; array[i] = array[j]; array[j] = temp; } public static void main(String args[]){ Main quickSort = new Main(); int[] inputArray = {8,6,3,4,9,2,1,7}; quickSort.sort(inputArray); System.out.println("Sorted Array " + Arrays.toString(inputArray)); } }
Sortie :
Voici les avantages de l'algorithme de tri rapide :
Quicksort est un algorithme rapide et récursif qui fonctionne selon le principe diviser pour mieux régner. Voici son analyse de complexité en Meilleur, Moyen et Pire Cas :
En Java, Les tableaux. La méthode Sort () utilise un algorithme de tri rapide pour trier un tableau.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!