Maison  >  Article  >  Java  >  Partagez les idées et les exemples de codes de plusieurs algorithmes de tri en Java

Partagez les idées et les exemples de codes de plusieurs algorithmes de tri en Java

伊谢尔伦
伊谢尔伦original
2017-04-29 13:39:021203parcourir

Tri des bulles

Idée de base : Dans un ensemble de nombres à trier, pour tous les nombres de la plage qui ne sont pas actuellement triés, triez les deux nombres adjacents dans l'ordre de haut en bas. ajustez-vous de manière à ce que les nombres plus grands diminuent et que les nombres plus petits augmentent.
Autrement dit : chaque fois que deux nombres adjacents sont comparés et qu'il s'avère que leur ordre est opposé à l'exigence de commande, ils sont échangés.
Le résultat de la première comparaison et du tri : les données les plus volumineuses seront placées au plus grand index
Le résultat de la deuxième comparaison et du tri : car les données les plus volumineuses ont été placées au plus grand index en premier lieu , donc les données à comparer cette fois sont -1 de plus que le nombre d'éléments dans le tableau, et les deuxièmes plus grandes données seront également classées au deuxième plus grand index
Le résultat du troisième tri par comparaison : C'est presque le pareil que la deuxième fois, sauf que les données à comparer cette fois sont 2 de moins que le nombre d'éléments du tableau,
La quatrième fois : 3 de moins...
En résumé, pour trier les données dans le tableau de petit à grand, le nombre total de comparaisons sera -1 fois supérieur à la longueur du tableau, et à mesure que le nombre de comparaisons augmente, les données à comparer diminuent à chaque fois.

public class Demo4 {  
  
    public static void main(String[] args) {  
    int number[]={49,38,65,97,76,13,27,14,10};  
    for(int i=0;i<number.length-1;i++){  
        for(int j=0;j<number.length-1-i;j++){  
        if(number[j]>number[j+1]){  
            int tmp=number[j];  
            number[j]=number[j+1];  
            number[j+1]=tmp;  
        }  
        }  
        for (int j = 0; j < number.length; j++) {  
        System.out.print(number[j]+"\t");  
          
        }  
        System.out.println("排序"+(i+1)+"次后的结果");  
          
    }  
  
    }  
  
}

Tri par sélection

Méthode de base :
Partez de l'index 0, comparez avec les éléments suivants dans l'ordre, mettez les plus petits en premier, après la première fois, le minimum la valeur apparaît Au plus petit index, la deuxième plus petite valeur est trouvée pour la deuxième fois.
Comment le mettre en œuvre concrètement ?
Tout d'abord, au premier tour, les données de l'index 0 sont comparées tour à tour aux données de chaque index suivant, jusqu'à ce qu'elles rencontrent une donnée plus petite qu'elle. À ce moment, ces petites données remplacent les données d'origine. sur l'index 0, puis les données remplacées continuent d'être comparées aux données sur l'index derrière sa position d'index d'origine. En d'autres termes, après le premier tour, les données sur l'index 0 doivent être les plus petites données de ce tableau <.> Au deuxième tour, les données de l'index 1 sont utilisées pour comparer avec les données suivantes. A ce moment, les données participant à la comparaison sont une de moins que celle d'origine
Au troisième tour, il y en aura une. moins, donc la valeur de j dans le cycle sera + 1, qui est l'indice d'index commençant à j + 1.

public class Demo5 {  
  
    public static void main(String[] args) {  
    int number[]={49,38,65,97,76,13,27,14,10};  
    for(int i=0;i<number.length;i++){  
        for(int j=i+1;j<number.length;j++){  
        if(number[i]>number[j]){  
            int tmp=number[i];  
            number[i]=number[j];  
            number[j]=tmp;  
        }  
        }  
        for (int j = 0; j < number.length; j++) {  
        System.out.print(number[j]+"\t");  
        }  
        System.out.println("第"+(i+1)+"次排序后的结果");  
          
    }  
      
  
    }  
  
}
Tri par insertion

Le tri par insertion consiste à insérer les éléments actuellement à trier dans une liste déjà triée. Un exemple très frappant consiste à saisir une carte à jouer avec la main droite et à l'insérer dans les cartes à jouer triées tenues dans la main gauche.

Le pire temps d'exécution du tri par insertion est O(n2), ce n'est donc pas l'algorithme de tri optimal.
Si le tableau d'entrée est déjà trié, le tri par insertion se produit de manière optimale et sa durée d'exécution est une fonction linéaire de la taille d'entrée.
Si le tableau d'entrée est trié dans l'ordre inverse, le pire des cas se produira. Le cas moyen est le même que le pire des cas et son coût en temps est Θ(n2).

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