


Analyse détaillée étape par étape de la mise en œuvre d'un algorithme de tri rapide en Java
Analyse détaillée étape par étape de l'implémentation Java de l'algorithme de tri rapide
Quick Sort est un algorithme de tri efficace qui utilise l'idée de diviser pour régner en divisant la séquence à trier en sous-séquences plus petites, puis trier les sous-séquences et enfin fusionner les sous-séquences pour obtenir une séquence ordonnée. Cet article présentera en détail les étapes de l'algorithme de tri rapide et fournira des exemples de code Java spécifiques.
- Étapes de l'algorithme :
Les étapes de base de l'algorithme de tri rapide sont les suivantes :
1.1 Sélectionnez un élément comme pivot (pivot), qui peut être le premier élément, le dernier élément ou un élément sélectionné au hasard.
1.2 Divisez la séquence à trier en deux sous-séquences : une séquence d'éléments inférieure ou égale au benchmark et une séquence d'éléments supérieure au benchmark.
1.3 Appliquer de manière récursive l'algorithme de tri rapide à deux sous-séquences.
1.4 Fusionner les sous-séquences pour obtenir une séquence ordonnée complète.
- Exemple de code Java :
Ce qui suit est un exemple de code spécifique utilisant Java pour implémenter l'algorithme de tri rapide :
public class QuickSort { public static void quickSort(int[] arr, int low, int high) { if (arr == null || arr.length == 0 || low >= high) { return; } // 选择基准元素 int pivotIndex = partition(arr, low, high); // 对基准元素左边的子序列递归排序 quickSort(arr, low, pivotIndex - 1); // 对基准元素右边的子序列递归排序 quickSort(arr, pivotIndex + 1, high); } private static int partition(int[] arr, int low, int high) { // 选择最后一个元素作为基准 int pivot = arr[high]; int i = low - 1; for (int j = low; j < high; j++) { if (arr[j] <= pivot) { i++; swap(arr, i, j); } } swap(arr, i + 1, high); return i + 1; } private static void swap(int[] arr, int i, int j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } public static void main(String[] args) { int[] arr = {5, 2, 9, 1, 6, 3, 8, 4, 7}; int n = arr.length; quickSort(arr, 0, n - 1); System.out.println("排序后的结果:"); for (int i : arr) { System.out.print(i + " "); } } }
- Description de l'exemple :
Dans le code ci-dessus, nous définissons un quickSort méthode code> Utilisée pour trier la séquence à trier, la méthode <code>partition
permet de diviser la séquence en deux sous-séquences. quickSort
方法用于对待排序序列进行排序,partition
方法用于将序列分割成两个子序列。
在quickSort
方法中,首先判断序列是否需要排序,然后选择基准元素,并调用partition
方法将序列分割。接着,对两个子序列递归应用quickSort
方法,直到序列长度为1。
partition
方法选择最后一个元素作为基准,并使用变量i
记录小于等于基准的元素个数。通过遍历序列,如果元素小于等于基准,则将其与i
quickSort
, déterminez d'abord si la séquence doit être triée, puis sélectionnez l'élément de base et appelez la méthode partition
pour diviser la séquence. Ensuite, appliquez la méthode quickSort
de manière récursive aux deux sous-séquences jusqu'à ce que la longueur de la séquence soit 1. La méthode partition
sélectionne le dernier élément comme ligne de base et utilise la variable i
pour enregistrer le nombre d'éléments inférieurs ou égaux à la ligne de base. En parcourant la séquence, si l'élément est inférieur ou égal à la référence, il est échangé avec la position pointée par i
, et enfin l'élément de référence est placé à la position appropriée. Enfin, exécutez la fonction principale pour afficher les résultats triés. 🎜🎜La complexité temporelle de l'algorithme de tri rapide est O(nlogn) et a une grande efficacité. En comprenant et en appliquant correctement les étapes ci-dessus, l'algorithme de tri rapide peut être appliqué de manière flexible dans la programmation réelle pour répondre aux exigences de tri. 🎜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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Cet article analyse les quatre premiers cadres JavaScript (React, Angular, Vue, Svelte) en 2025, en comparant leurs performances, leur évolutivité et leurs perspectives d'avenir. Alors que tous restent dominants en raison de fortes communautés et écosystèmes, leur populaire relatif

Cet article aborde la vulnérabilité CVE-2022-1471 dans SnakeyAml, un défaut critique permettant l'exécution du code distant. Il détaille comment la mise à niveau des applications de démarrage de printemps vers SnakeyAml 1.33 ou ultérieurement atténue ce risque, en soulignant cette mise à jour de dépendance

Le chargement de classe de Java implique le chargement, la liaison et l'initialisation des classes à l'aide d'un système hiérarchique avec Bootstrap, Extension et Application Classloaders. Le modèle de délégation parent garantit que les classes de base sont chargées en premier, affectant la classe de classe personnalisée LOA

L'article examine la mise en œuvre de la mise en cache à plusieurs niveaux en Java à l'aide de la caféine et du cache de goyave pour améliorer les performances de l'application. Il couvre les avantages de configuration, d'intégration et de performance, ainsi que la gestion de la politique de configuration et d'expulsion le meilleur PRA

Node.js 20 améliore considérablement les performances via des améliorations du moteur V8, notamment la collecte des ordures et les E / S plus rapides. Les nouvelles fonctionnalités incluent une meilleure prise en charge de Webassembly et des outils de débogage raffinés, augmentant la productivité des développeurs et la vitesse d'application.

Iceberg, un format de table ouverte pour les grands ensembles de données analytiques, améliore les performances et l'évolutivité du lac Data. Il aborde les limites du parquet / orc par le biais de la gestion interne des métadonnées, permettant une évolution efficace du schéma, un voyage dans le temps, un W simultanément

Cet article explore les méthodes de partage des données entre les étapes du concombre, la comparaison du contexte de scénario, les variables globales, le passage des arguments et les structures de données. Il met l'accent

Cet article explore l'intégration de la programmation fonctionnelle dans Java à l'aide d'expressions Lambda, de flux API, de références de méthode et facultatif. Il met en évidence des avantages tels que l'amélioration de la lisibilité au code et de la maintenabilité grâce à la concision et à l'immuabilité
