Maison Java javaDidacticiel Algorithme de tri rapide implémenté en Java et son évaluation de l'efficacité

Algorithme de tri rapide implémenté en Java et son évaluation de l'efficacité

Feb 18, 2024 pm 03:38 PM
java Analyse des performances Tri rapide

Algorithme de tri rapide implémenté en Java et son évaluation de lefficacité

Implémentation Java du tri rapide et son analyse des performances

Quick Sort (Quick Sort) est un algorithme de tri très couramment utilisé et efficace. C'est une idée de diviser pour mieux régner (Divide and Conquer). Cet algorithme divise un tableau en deux sous-tableaux, puis trie respectivement les deux sous-tableaux et transforme enfin le tableau entier en une séquence ordonnée. Le tri rapide affiche d'excellentes performances lors du traitement de données à grande échelle.

Le tri rapide est implémenté de manière récursive. L'idée de base est la suivante :

  1. Sélectionnez un élément de référence (pivot) et divisez le tableau en deux sous-tableaux. Celui plus grand que l'élément pivot est placé à droite. , et celui plus petit que l'élément pivot est placé à gauche ;
  2. Triez rapidement les sous-tableaux gauche et droit de manière récursive
  3. Lorsque la longueur du sous-tableau est 1 ou 0, la récursion s'arrête et le tri est terminé.

Ce qui suit est un exemple de code pour implémenter le tri rapide à l'aide du langage Java :

public class QuickSort {
    public static void quickSort(int[] arr, int start, int end) {
        if (start < end) {
            int pivotIndex = partition(arr, start, end); // 将数组分成两部分,并返回基准元素的索引
            quickSort(arr, start, pivotIndex - 1); // 对左子数组进行快速排序
            quickSort(arr, pivotIndex + 1, end); // 对右子数组进行快速排序
        }
    }

    public static int partition(int[] arr, int start, int end) {
        int pivot = arr[start]; // 选择数组的第一个元素作为基准元素
        int left = start + 1;
        int right = end;
        while (left <= right) {
            // 从左边找到大于基准元素的值
            while (left <= right && arr[left] <= pivot) {
                left++;
            }
            // 从右边找到小于基准元素的值
            while (left <= right && arr[right] > pivot) {
                right--;
            }
            // 交换左右两个值
            if (left < right) {
                int temp = arr[left];
                arr[left] = arr[right];
                arr[right] = temp;
            }
        }
        // 将基准元素放到正确的位置
        arr[start] = arr[right];
        arr[right] = pivot;
        return right;
    }

    public static void main(String[] args) {
        int[] arr = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1}; // 待排序数组
        quickSort(arr, 0, arr.length - 1); // 快速排序
        for (int num : arr) {
            System.out.print(num + " ");
        }
    }
}

Ce qui précède est l'implémentation de base de l'algorithme de tri rapide, utilisant la récursivité pour diviser le tableau et trier. Ensuite, nous analysons ses performances.

La complexité temporelle du tri rapide est O(nlogn), où n est la taille du tableau à trier. La performance du tri rapide dépend principalement de la sélection des éléments de référence et de la rationalité de la division.

Pour la sélection des éléments de base, vous pouvez généralement sélectionner le premier élément, le dernier élément, l'élément du milieu, etc. du tableau. Le choix d'éléments de référence appropriés peut réduire le nombre de divisions et améliorer les performances du tri rapide.

La rationalité de la division est également la clé d'une performance de tri rapide. Chaque fois que la division est effectuée, les valeurs supérieures à l'élément de base doivent être placées à droite et les valeurs inférieures à l'élément de base sont placées à gauche. Cela garantit que le côté gauche de la position de l'élément de base a. des valeurs inférieures à elle, et le côté droit a des valeurs supérieures à elle. Si la division est inégale, entraînant une grande différence de longueur entre les sous-tableaux gauche et droit du résultat de la division, l'efficacité du tri rapide peut être réduite.

Quicksort est un algorithme de tri instable car l'ordre relatif d'éléments égaux peut changer au cours du processus d'échange d'éléments.

En résumé, le tri rapide est un algorithme de tri efficace en sélectionnant raisonnablement les éléments de référence et en divisant le tableau, vous pouvez obtenir de meilleures performances. Cependant, lors du traitement de données à grande échelle, il convient de prêter attention à la sélection des éléments de référence et à la rationalité de la division afin d'améliorer l'efficacité de l'algorithme.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Oguri Cap Build Guide | Un joli Musume Derby
3 Il y a quelques semaines By Jack chen
Guide de construction d'Agnes Tachyon | Un joli Musume Derby
3 Il y a quelques semaines By Jack chen
Guide de construction de Grass Wonder | Uma musume joli derby
2 Il y a quelques semaines By Jack chen
Pic comment émoter
1 Il y a quelques mois By Jack chen

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Configuration de l'environnement de développement PHP Configuration de l'environnement de développement PHP Jul 18, 2025 am 04:55 AM

La première étape consiste à sélectionner le package d'environnement intégré XAMPP ou MAMP pour créer un serveur local; La deuxième étape consiste à sélectionner la version PHP appropriée en fonction des besoins du projet et de configurer la commutation de la version multiple; La troisième étape consiste à sélectionner VScode ou PhpStorm comme éditeur et déboguer avec xdebug; De plus, vous devez installer Composer, PHP_CODESNIFFER, PHPUNIT et d'autres outils pour aider au développement.

Opérateurs de comparaison PHP Opérateurs de comparaison PHP Jul 18, 2025 am 04:57 AM

Les opérateurs de comparaison PHP doivent faire attention aux problèmes de conversion de type. 1. Utiliser == pour comparer les valeurs uniquement, et la conversion de type sera effectuée, comme 1 == "1" est vraie; 2. Utilisation === Pour nécessiter la même valeur que le type, tel que 1 === "1" est faux; 3. La comparaison de taille peut être utilisée sur les valeurs et les chaînes, telles que "Apple"

PHP commentant la syntaxe PHP commentant la syntaxe Jul 18, 2025 am 04:56 AM

Il existe trois façons courantes d'utiliser les commentaires PHP: les commentaires en une seule ligne conviennent à l'explication brièvement de la logique de code, telle que // ou # pour l'explication de la ligne actuelle; Commentaires multi-lignes /*...*/ convient à une description détaillée des fonctions ou des classes; COMMENTAIRES DOCUMENTS DOCBLOCK Commencez par / ** pour fournir des informations rapides pour l'IDE. Lorsque vous l'utilisez, vous devez éviter les bêtises, continuez à mettre à jour de manière synchrone et n'utilisez pas de commentaires pour bloquer les codes pendant longtemps.

Opter pour un traitement audio / vidéo Opter pour un traitement audio / vidéo Jul 20, 2025 am 04:14 AM

Le cœur du traitement audio et vidéo consiste à comprendre le processus de base et les méthodes d'optimisation. 1. Le processus de base comprend l'acquisition, le codage, la transmission, le décodage et la lecture, et chaque lien a des difficultés techniques; 2. Des problèmes courants tels que l'audio et l'aberration vidéo, le retard de latence, le bruit sonore, l'image floue, etc. peuvent être résolues par ajustement synchrone, optimisation de codage, module de réduction du bruit, ajustement des paramètres, etc.; 3. Il est recommandé d'utiliser FFMPEG, OpenCV, WebBrTC, GStreamer et d'autres outils pour atteindre des fonctions; 4. En termes de gestion des performances, nous devons prêter attention à l'accélération matérielle, à la définition raisonnable des fréquences d'images de résolution, à des problèmes de concurrence et de fuite de mémoire de contrôle. La maîtrise de ces points clés contribuera à améliorer l'efficacité du développement et l'expérience utilisateur.

Utilisation de la façade du traducteur pour la localisation à Laravel. Utilisation de la façade du traducteur pour la localisation à Laravel. Jul 21, 2025 am 01:06 AM

ThetranslatorfacadeinLaraveLisusesedForLocalisation par la mise en œuvre des étages et un éternelage et un émerveillement denanguagesaTrime.

PHP commentant les équipes PHP commentant les équipes Jul 18, 2025 am 04:54 AM

La rédaction de bons commentaires est cruciale pour le travail d'équipe, en particulier dans les projets PHP, la clé est de savoir comment rédiger des commentaires utiles. 1. Utilisez DocBlock pour clarifier l'objectif de la fonction, y compris les paramètres et les types de valeur de retour, et améliorer l'efficacité de la reconnaissance et du développement IDE; 2. Ajouter des commentaires en ligne à une logique complexe pour expliquer les conditions de jugement clé ou le traitement spécial; 3. Unifier le style d'annotation, standardiser les exigences du format et du contenu et utilisez l'outil pour vérifier pour assurer la cohérence.

SQL pour l'analyse prédictive SQL pour l'analyse prédictive Jul 20, 2025 am 02:02 AM

Dans l'analyse prédictive, SQL peut terminer la préparation des données et l'extraction de caractéristiques. La clé consiste à clarifier les exigences et à utiliser raisonnablement les fonctions SQL. Les étapes spécifiques incluent: 1. La préparation des données nécessite d'extraire les données historiques de plusieurs tables et de l'agrégation et du nettoyage, telles que l'agrégation du volume des ventes par jour et les informations promotionnelles associées; 2. Le projet de fonctionnalité peut utiliser les fonctions de fenêtre pour calculer les intervalles de temps ou les fonctionnalités de décalage, telles que l'obtention de l'intervalle d'achat récent de l'utilisateur via LAG (); 3. La segmentation des données est recommandée pour diviser l'ensemble de formation et le jeu de test en fonction de l'heure, tels que le tri par date avec ROW_NUMBER () et le marquage du type de collecte proportionnellement. Ces méthodes peuvent développer efficacement la base de données requise pour les modèles prédictifs.

Optez pour des bibliothèques de manipulation d'images Optez pour des bibliothèques de manipulation d'images Jul 21, 2025 am 12:23 AM

Les bibliothèques de traitement d'images GO courantes incluent des packages d'images de bibliothèque standard et des bibliothèques tierces, telles que l'imagerie, le BIMG et l'imagick. 1. Le package d'images convient aux opérations de base; 2. L'imagerie a une fonction complète et une API simple, qui convient à la plupart des besoins; 3. Le BIMG est basé sur les libvips, a des performances solides, qui conviennent aux grandes images ou à une concurrence élevée; 4. Imagick lie ImageMagick, qui est puissant mais a de lourdes dépendances. Implémentez rapidement la mise à l'échelle de l'image et le recadrage. Vous pouvez utiliser la bibliothèque d'imagerie pour la compléter à travers quelques lignes de code dans les fonctions de redimensionnement et de COMPROPACHOR, et prendre en charge plusieurs configurations de paramètres. L'ajout de filtres ou les tons d'ajustement peut être obtenu grâce à la fonction de transformation des couleurs fournie par l'imagination, comme Graysc

See all articles