Cet article décrit la méthode de mise en œuvre du tri des cocktails dans le tri des échanges Java. Partagez-le pour votre référence. Les détails sont les suivants:
Le tri des cocktails, c'est-à-dire le tri directionnel des bulles, le tri des cocktails, le tri des remous (peut également être considéré comme une déformation du tri de sélection), un tri, le tri et le tri des allers-retours ou le tri des happy hour, est une déformation du tri des bulles. La différence entre cet algorithme et le tri des bulles est que lors du tri, il est trié dans deux directions dans la séquence.
Différent du tri des bulles:
Le tri des cocktails équivaut à une légère déformation du tri des bulles. La différence est de faible à élevée puis élevée à faible, tandis que le tri de bulles ne compare que chaque élément de la séquence de faible à haut. Il peut obtenir des performances légèrement meilleures que le tri des bulles car le tri des bulles n'est comparé que dans une direction (de faible à haut) et ne déplace qu'un seul élément par boucle.
Prenant la séquence (2,3,4,5,1) à titre d'exemple, le tri des cocktails ne nécessite qu'une seule visite à la séquence pour terminer le tri, mais quatre fois si vous utilisez le tri des bulles. Cependant, dans l'état d'une séquence désordonnée, l'efficacité du tri des cocktails et du tri des bulles est très médiocre.
Pire complexité de temps o (n ^ 2)
Complexité temporelle optimale o (n)
Complexité du temps moyen o (n ^ 2)
L'image dynamique du tri des cocktails est la suivante:
Analyse du code:
package com.baobaotao.test; = array.length; J]> Array [J + 1]) {swap (array, j, j + 1);}} pour (int j = longueur-i-1; j> i; j--) {if (array [j] <Array [J-1]) {swap (array, j-1, j);}} printarr (array); STATIQUE VOID COCATAILSORTFLAG (int [] Array) {int length = Array.Length; Boolean Flag1, Flag2 = TRUE; ; = FAUX; ; être échangé entrant b * @param c le nombre à échanger c * / public statique void swap (int [] a, int b, int c) {int temp = 0; b]> a [c]) {temp = a [b]; a [b] = a [c]; vide printarr (int [] array) {for (int c: array) {System.out.print (c + "");} System.out.println (); int [] numéro = {11,95,45,15,78,84,51,24,12}; int [] numéro2 = {11,95,45,15,78,84,51, 24,12}; Cocatailsort (numéro);Analyse des résultats:
11 12 45 15 78 84 51 24 95 11 12 15 24 45 78 51 84 95 11 12 15 24 45 51 78 84 95 11 12 15 24 45 51 78 84 95 ************** * *** 11 12 45 15 78 84 51 24 95 11 12 15 24 45 78 51 84 95 11 12 15 24 45 51 78 84 95
On peut voir que le nombre de fois où les cocktails sont triés est beaucoup moins que celui des sortes de bulles ordinaires. Cela ne prend que 4 fois, et la version améliorée du tri des cocktails de logo ne prend que 3 fois pour terminer le tri.
J'espère que cet article sera utile à la programmation Java de tous.