Maison  >  Article  >  Java  >  Exemples de méthodes de tri en Java

Exemples de méthodes de tri en Java

王林
王林original
2019-11-12 15:36:284054parcourir

Exemples de méthodes de tri en Java

Tri à bulles

Caractéristiques : faible efficacité, mise en œuvre simple

Idées (de petite à grande) : chacune Déplacer le le plus grand élément de la séquence à trier jusqu'à la fin, et le reste est la nouvelle séquence à trier. Répétez les étapes ci-dessus jusqu'à ce que tous les éléments soient triés. Il s'agit simplement d'un type de tri des bulles, bien sûr, il peut également être trié de l'arrière vers l'avant.

public void bubbleSort(int array[]) {
        int t = 0;        
        for (int i = 0; i < array.length - 1; i++)            
        for (int j = 0; j < array.length - 1 - i; j++)                
        if (array[j] > array[j + 1]) {
                    t = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = t;
                }
    }

Tri par sélection

Caractéristiques : faible efficacité, facile à mettre en œuvre

Idée : sélectionner le plus petit de la séquence à trier à chaque passage, les éléments sont placés à la fin de la séquence triée et les bits restants doivent être triés. Répétez les étapes ci-dessus jusqu'à ce que le tri soit terminé.

public void selectSort(int array[]) {
        int t = 0;        
        for (int i = 0; i < array.length - 1; i++)            
        for (int j = i + 1; j < array.length; j++)                
        if (array[i] > array[j]) {
                    t = array[i];
                    array[i] = array[j];
                    array[j] = t;
                }
    }

Tri par insertion

Caractéristiques : faible efficacité, facile à mettre en œuvre

Idée : diviser le tableau en deux parties et diviser cette dernière une partie des éléments Comparez-le avec les éléments précédents un par un. Si le tableau d'éléments actuel[i] est petit, remplacez-le. Trouvez une position raisonnable et insérez un tableau[i]

public void insertionSort(int array[]) {
        int i, j, t = 0;        
        for (i = 1; i < array.length; i++) {
            t = array[i];            
            for (j = i - 1; j >= 0 && t < array[j]; j--)
                array[j + 1] = array[j];
            array[j + 1] = t;
        }
    }

tri rapide

Caractéristiques : efficace, la complexité temporelle est inlogn.

Adoptez l'idée de​​la méthode diviser pour mieux régner : définissez d'abord un pivot de valeur d'axe, puis utilisez cette valeur d'axe comme base de division pour diviser la séquence à trier en deux parties plus grandes que la pivot et plus petit que le pivot, puis divisez les subdivisions en deux parties. La séquence est triée jusqu'à ce que la sous-séquence contienne un élément.

public void quickSort(int array[], int low, int high) {// 传入low=0,high=array.length-1;
        int pivot, p_pos, i, t;// pivot->位索引;p_pos->轴值。        
        if (low < high) {
            p_pos = low;
            pivot = array[p_pos];            
            for (i = low + 1; i <= high; i++)                
            if (array[i] > pivot) {
                    p_pos++;
                    t = array[p_pos];
                    array[p_pos] = array[i];
                    array[i] = t;
                }
            t = array[low];
            array[low] = array[p_pos];
            array[p_pos] = t;            // 分而治之
            quickSort(array, low, p_pos - 1);// 排序左半部分
            quickSort(array, p_pos + 1, high);// 排序右半部分
        }

Tutoriel recommandé : Tutoriel Java

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