Maison  >  Article  >  Java  >  Explication détaillée de la méthode Java d'utilisation de la classe Arrays pour le tri des tableaux

Explication détaillée de la méthode Java d'utilisation de la classe Arrays pour le tri des tableaux

PHPz
PHPzoriginal
2023-07-25 10:13:342335parcourir

Explication détaillée de la façon dont Java utilise la classe Arrays pour trier les tableaux

En programmation Java, il est souvent nécessaire de trier les tableaux. Afin de simplifier le processus de tri, Java fournit la classe Arrays, qui contient certaines méthodes de tri couramment utilisées. Cet article présentera en détail la méthode de tri de la classe Arrays et démontrera son utilisation à travers des exemples de code.

  1. Méthodes de tri de la classe Arrays

La classe Arrays fournit deux méthodes de tri surchargées, à savoir sort et parallelSort. Le premier est utilisé pour trier les tableaux en série, tandis que le second est utilisé pour trier les tableaux en parallèle.

Méthode de tri 1.1

La méthode de tri est utilisée pour trier le tableau en série. Il dispose de plusieurs méthodes surchargées et différentes méthodes peuvent être sélectionnées en fonction des exigences de tri.

L'exemple de code est le suivant :

import java.util.Arrays;

public class ArraySortExample {
    public static void main(String[] args) {
        int[] arr = {5, 2, 9, 1, 3};
        System.out.println("排序前:" + Arrays.toString(arr));
        Arrays.sort(arr);
        System.out.println("排序后:" + Arrays.toString(arr));
    }
}

Les résultats d'exécution sont les suivants :

排序前:[5, 2, 9, 1, 3]
排序后:[1, 2, 3, 5, 9]

1.2 Méthode parallelSort

La méthode parallelSort est utilisée pour trier les tableaux en parallèle. Par rapport à la méthode de tri, elle permet d'effectuer l'opération de tri plus rapidement et convient aux tableaux à plus grande échelle.

L'exemple de code est le suivant :

import java.util.Arrays;

public class ArrayParallelSortExample {
    public static void main(String[] args) {
        int[] arr = {5, 2, 9, 1, 3};
        System.out.println("排序前:" + Arrays.toString(arr));
        Arrays.parallelSort(arr);
        System.out.println("排序后:" + Arrays.toString(arr));
    }
}

Les résultats d'exécution sont les suivants :

排序前:[5, 2, 9, 1, 3]
排序后:[1, 2, 3, 5, 9]
  1. Algorithme de tri

La méthode de tri dans la classe Arrays utilise l'algorithme de tri rapide optimisé (Dual-Pivot Quicksort), qui fournit meilleures performances dans la plupart des cas Hautes performances. Cet algorithme est basé sur l'idée de diviser pour régner, en sélectionnant deux éléments pivots pour diviser le tableau en trois parties : la partie plus petite que l'élément pivot, la partie égale à l'élément pivot et la partie plus grande que le pivot. élément. Ensuite l’opération de tri est effectuée de manière récursive sur les deux parties divisées.

La complexité temporelle de l'algorithme de tri rapide est O(nlogn), où n est la longueur du tableau.

  1. Notes

Lorsque vous utilisez la classe Arrays pour le tri de tableaux, vous devez faire attention aux points suivants :

3.1 Nécessité d'implémenter l'interface Comparable

Si vous souhaitez trier le tableau d'objets d'une classe personnalisée, la classe doit implémenter l'interface Comparable et remplacer la méthode compareTo. Cela permet de comparer correctement la taille des objets lors du processus de tri.

L'exemple de code est le suivant :

import java.util.Arrays;

class Student implements Comparable<Student> {
    private String name;
    private int score;

    public Student(String name, int score) {
        this.name = name;
        this.score = score;
    }

    @Override
    public int compareTo(Student o) {
        return this.score - o.score;
    }

    @Override
    public String toString() {
        return name + ": " + score;
    }
}

public class StudentSortExample {
    public static void main(String[] args) {
        Student[] students = {new Student("Tom", 90), new Student("Jerry", 80)};
        System.out.println("排序前:" + Arrays.toString(students));
        Arrays.sort(students);
        System.out.println("排序后:" + Arrays.toString(students));
    }
}

Les résultats d'exécution sont les suivants :

排序前:[Tom: 90, Jerry: 80]
排序后:[Jerry: 80, Tom: 90]

3.2 Optimisation des performances du tri parallèle

Lorsque le tri parallèle est applicable, si la longueur du tableau est inférieure au seuil par défaut (8192 est utilisé dans la classe Arrays), l'algorithme de tri par insertion sera utilisé pour le tri. L'algorithme de tri par insertion offre de meilleures performances sur les données à petite échelle.

Afin d'améliorer encore les performances du tri parallèle, vous pouvez forcer l'utilisation de l'algorithme de tri par fusion traditionnel en définissant la propriété système java.util.Arrays.useLegacyMergeSort sur true. Cela évite l'utilisation du tri par insertion dans le cas d'un tri parallèle. java.util.Arrays.useLegacyMergeSort为true,强制使用传统的归并排序算法。这样可以在并行排序的情况下避免使用插入排序。

示例代码如下:

import java.util.Arrays;

public class ArrayParallelSortPerformanceExample {
    public static void main(String[] args) {
        int[] arr = {5, 2, 9, 1, 3};
        System.out.println("排序前:" + Arrays.toString(arr));
        System.setProperty("java.util.Arrays.useLegacyMergeSort", "true");
        Arrays.parallelSort(arr);
        System.out.println("排序后:" + Arrays.toString(arr));
    }
}
  1. 总结

本文详细介绍了Java中使用Arrays类进行数组排序的方法。通过调用sort方法可以对数组进行串行排序,而调用parallelSort方法可以对数组进行并行排序。并行排序的性能优于串行排序,适用于大规模数据。在使用自定义类的对象数组进行排序时,需要实现Comparable接口。同时,通过设置java.util.Arrays.useLegacyMergeSort

L'exemple de code est le suivant : 🎜rrreee
    🎜Résumé🎜🎜🎜Cet article détaille la méthode d'utilisation de la classe Arrays pour le tri des tableaux en Java. Les tableaux peuvent être triés en série en appelant la méthode sort, et les tableaux peuvent être triés en parallèle en appelant la méthode parallelSort. Le tri parallèle offre de meilleures performances que le tri en série et convient aux données à grande échelle. Lorsque vous utilisez un tableau d'objets d'une classe personnalisée pour le tri, vous devez implémenter l'interface Comparable. Dans le même temps, en définissant la propriété java.util.Arrays.useLegacyMergeSort sur true, les performances du tri parallèle peuvent être encore optimisées. Maîtriser la méthode de tri de la classe Arrays peut gérer plus efficacement les problèmes de tri des tableaux en programmation. 🎜

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:
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