Les exemples de cet article décrivent les quatre méthodes de tri de base en JAVA. Partagez-le avec tout le monde pour votre référence. Les détails sont les suivants :
JAVA dispose de quatre méthodes de tri de base, dont la méthode à bulles, la méthode d'insertion, la méthode de sélection et la méthode de tri SHELL. La méthode de sélection est une amélioration de la méthode à bulles, et la méthode de tri SHELL est une amélioration de la méthode d'insertion. fondamentalement, cela peut être résumé. Il existe deux méthodes de tri différentes : la méthode d'insertion et la méthode à bulles
1 Méthode d'insertion :
Parcourir la collection triée. Chaque fois qu'un élément est atteint, cet élément est parcouru et comparé à tous les éléments qui le précèdent, et les éléments qui correspondent à l'ordre de tri sont déplacés un par un vers la position où il doit apparaître dans le plage actuelle. L'échange est mis en œuvre par un mouvement traversant adjacent et un contrôle en double boucle. Cette méthode de tri appartient au type de serpent local, je dois tout organiser dans un certain ordre.
Le code de traitement est le suivant :
public void sort(int[] data) { int temp; for(int i=1; i〈data.length; i++){ for(int j=i; (j〉0)&&(data[j]〉data[j-1]); j--){ temp=date[j]; data[j]=data[j-1]; data[j-1]=temp; } } }
Méthode 2 bulles :
C'est relativement simple. Sa boucle interne garantit qu'après un parcours, le plus petit (le plus grand) élément de l'ensemble apparaît dans sa position correcte, et la fois suivante, c'est le plus petit élément suivant. . . Cette méthode comporte fondamentalement le même nombre de mouvements d'échange dans diverses circonstances de distribution définie et est la plus lente. La mise en œuvre est également un contrôle à double boucle. Cette méthode de tri appartient au Dragon Crossing the River, ce qui signifie trouver l'extrême. Cependant, le Dragon Crossing the River a aussi un frère aîné, un deuxième frère, etc., ils ne peuvent donc choisir que le frère aîné et le deuxième frère.Le code de traitement est le suivant :
public static int [] maopao(int[] data) { int temp; for(int i=0; i〈data.length-1; i++){ for(int j=i+1; j〈data.length; j++){ if(data[i]〈data[j]){ temp=data[i]; data[i]=data[j]; data[j]=temp; } } } return data;
Trois méthodes de sélection :
Cette méthode enregistre uniquement la position du plus petit (grand) élément en parcourant l'ensemble. Après un parcours, elle effectue une opération d'échange de position, qui est similaire au bullage. Cependant, pendant le processus de comparaison, aucune opération d'échange n'est effectuée. , et seule la position de l'élément est enregistrée. Une seule opération d'échange est effectuée par parcours. Cette paire est plus adaptée aux éléments dont la commande d'échange est chronophage. Cette méthode de tri est beaucoup plus profonde que la méthode des bulles. Je me souviens d'abord des données extrêmes, puis je les traite après avoir parcouru les données. Contrairement à la méthode des bulles, qui ne doit être traitée que si elle est un peu plus extrême que moi, la sélection. méthode uniquement Gère les données les plus extrêmes dans sa portée.
public static void xuanze(int[] data) { int temp; for (int i = 0; i 〈 data.length; i++) { int lowIndex = i; for (int j = data.length - 1; j 〉 i; j--) { if (data[j] 〉 data[lowIndex]) { lowIndex = j; } } temp=data[i]; data[i]=data[lowIndex]; data[lowIndex]=temp; } }
Tri de quatre coquillages :
Il s'agit d'une amélioration du tri par insertion. Il envisage de diviser les éléments de l'ensemble en groupes selon une certaine base de tri, de sorte que chaque groupe soit d'abord organisé dans l'ordre de base dans la portée locale, et enfin tous les éléments soient triés une fois. Tri par insertion.
public void sort(int[] data) { for(int i=data.length/2; i〉2; i/=2){ for(int j=0; j〈i; j++){ insertSort(data,j,i); } } insertSort(data,0,1); } private void insertSort(int[] data, int start, int inc) { int temp; for(int i=start+inc; i〈data.length; i+=inc){ for(int j=i; (j〉=inc)&&(data[j]〈data[j-inc]); j-=inc){ temp=data[j]; data[j]=data[j-inc] data[j-inc]=temp; } } }