Cet article présente principalement la façon dont Java réalise huit algorithmes de tri couramment utilisés: insérer le tri, le tri bouillonnant, la sélection du tri, le tri des collines, le tri rapide, le tri de fusion, l'ordre d'empilement et le tri de base.
Classification
1) Insérer le tri (tri directement inséré, tri des collines)
2) Échange de tri (tri bouillonnant, tri rapide)
3) Sélectionnez Tri (Sélectionnez directement le tri, tri empilé)
4) Merger le tri
5) Distribution et tri (tri de base)
L'espace auxiliaire requis est le plus: l'espace le plus auxiliaire pour les fusions et le tri: la vitesse de l'effet la plus rapide de l'ordre d'empilement: tri rapide
Instable: Trier rapidement, tri collant, tri empilé.
Jetons un coup d'œil à la relation entre 8 tri:
1. Insérer directement le tri
(1) Idées de base: Parmi les ensembles à tri, en supposant (n-1) [n> = 2] le numéro est déjà Row
Dans l'ordre, maintenant le numéro NN est inséré dans l'ordre précédent, de sorte que ce numéro N
C'est aussi en ordre. Ceci est diffusé à plusieurs reprises jusqu'à ce que toute la commande soit en ordre.
(2) exemple
(3) Réalisez avec Java
package com.njue; 17,18,23,34,15,35,25,53,51}; int temp = 0; Temp = a [i]; test;} pour (int i = 0; i <a.length; i ++) {System.out.println (a [i]);}}}}}2. Sort de colline (tri incrémentiel minimal)
(1) Idées de base: Le nombre de groupes à tri par l'algorithme est divisé en plusieurs groupes en fonction du nombre de D augmentés (n / 2, n comme le nombre à tri). et trié, puis utilisez une augmentation plus petite (d / 2) pour le regrouper, puis insérez directement le tri dans chaque groupe. Lorsque l'incrément est réduit à 1, le tri est directement inséré et le type est terminé.
(2) Exemple:
(3) Réalisez avec Java
PublicClass ShellSort {publicShellSort () {int a [] = {1,54,3,78,34,12,45,56,100}; .ceil (d1 / 2); int d = (int) d1; ) {int j = id; j + d] = temp;}} if (d == 1) {break;} pour (int i = 0; i <a.Length; i ++) {System.out.println (a [i]);} }}3. Sélection simple de tri
(1) Idées de base: Dans un groupe à tri, sélectionnez le plus petit nombre du nombre de nombres et la première position;
Trouvez ensuite le plus petit nombre de la deuxième position dans les nombres restants, afin que la boucle soit comparée au dernier numéro du dernier numéro et du dernier numéro.
(2) Exemple:
(3) Réalisez avec Java
classe publique selectSort {public selectSort () {int a [] = {1,54,3,78,34,12,45}; ) {int j = i + 1; j]; pose = j;}} a [posity] = a [i]; je] );}}4. tri de tas
(1) Idées de base: le tri de l'emballage est une sélection de tri en forme d'arbre, ce qui est une amélioration efficace de la sélection directe de tri.
La définition du tas est la suivante: une séquence (h1, h2, ..., hn) avec n éléments, et seulement comme satisfait (hi> = h2i, hi> = 2i + 1) ou (hi <= h2i, hi <= 2i 2i) +1) (i = 1,2, ..., n / 2) est appelé une pile. Ici, nous ne discutons que des piles qui remplissent les conditions de la première. On peut voir à partir de la définition du tas que l'élément supérieur (c'est-à-dire le premier élément) doit être le plus grand élément (un grand vidage supérieur). L'arbre binaire complet peut représenter intuitivement la structure du tas. Le haut de la pile est enraciné et les autres sont des sous-trèbres gauche et des sous-trèbres droits. Initialement, les séquences à tri sont considérées comme un arbre binaire stocké dans l'ordre, ajustant leur ordre de stockage afin qu'ils deviennent une pile. Échangez ensuite le nœud racine avec le dernier nœud du tas. Ensuite, réadaptez le numéro (N-1) précédent pour le faire tas. Selon ce type, jusqu'à ce qu'il n'y ait que deux nœuds, et les échanger, et enfin obtenir une séquence ordonnée de n nœuds. Du point de vue de la description de l'algorithme, le séquençage d'empilement nécessite deux processus. Par conséquent, il existe deux fonctions de composition du tri du tas. L'un est la fonction de pénétration de la pile, et l'autre est d'appeler à plusieurs reprises la fonction d'infiltration pour implémenter la fonction de tri.
(2) Exemple:
Séquence initiale: 46,79,56,38,40,84
Construction:
Échange, botter le nombre maximum de la pile
Les nœuds restants sont à nouveau construits et le nombre maximum est échangé
Poussez dans l'ordre: les deux derniers nœuds de la dernière pile des deux derniers nœuds sont échangés, un est expulsé et le tri est terminé.
(3) Réalisez avec Java
Import Java.util.array , 15,35,25,53,51}; public heapsort () {heapsort (a);} public void heapsort (int [] a) {System.out.println ("Démarrer le tri"); Longueur; 0, arrayLength-i); Méthode gonalted Stume int tmp = data [i]; ) {// TODO Méthode d'adhésion automatique Stub // Le nœud parent du nœud (dernier nœud) à partir du démarrage de LastIndex pour (int i = (LastIndex-); i> = 0; i-) {// k Enregistrer le nœud Int k = i; Le plus grand -Indeau est plus petit que LastIndex, c'est-à-dire que le nœud droit du nœud k représentant le nœud k représenté par BiggeryIndex + 1 existe if (BiggeryIndex <LastIndex) {// Si la valeur du nœud droit est plus grande, (Data [Bigigridex ] <data [biggestindex + 1]) {// BigalIndex enregistre toujours l'index biggestindex ++;} // si la valeur du nœud k est inférieure à la valeur du nœud k if (données [données [données [données k ] <Data [BiggeryIndex]) {// Échange de leur swap (Data, K, BigredIndex); que la valeur des nœuds gauche et droit.5. Tri de bulles
(1) Idées de base: Dans un groupe à tri, tous les nombres dans la portée qui ne sont pas encore déchargés, la comparaison et l'ajustement des deux nombres adjacents de haut en bas, de sorte que les plus grands qui coulent, plus petits. Autrement dit: chaque fois que deux nombres adjacents sont comparés, ils constatent que leurs exigences de tri et de tri sont opposées et qu'ils échangent.
(2) Exemple:
(3) Réalisez avec Java
classe publique Bubblesort {publicBBitsort () {inta [] = {49,38,65,97,76,13,49,78,34,5,4,62,98,54,54,56, 17,18,23 , 34,15,35,25,53,51}; Longueur-1-i; j ++) {if (a [j]> a [j + 1]) {test = a [j]; +1] = temp;}}} pour (int i = 0; i <a.length; i ++) {System.out.println (a [i]);}}6. Trier rapidement
(1) Idées de base: choisissez un élément de référence, choisissez généralement le premier élément ou le dernier élément. Élément de référence.
(2) Exemple:
(3) Réalisez avec Java
PublicClass Quicksort {inta [] = {49,38,65,97,76,13,27,78,34,264,5,4,99,98,54,56,17,18 23,34,15,35,25 , 53,51}; [] liste, int low) {int tmp = list [Low]; high-;} list [low] = list [high]; [High] = List [Low]; int low, int high) {if (low <high) {int middle = getMiddle (list, bas, high); Tri de tables à faible charge_quicksort (liste, milieu + 1, haut); Array est vide_quicksort (a2,0, a2.length -1);}}}7. Fusionner le tri
(1) Tri de base: la méthode de tri de la pièce jointe (fusion) consiste à fusionner deux (ou plus) ou plus de formulaires en un nouvel ordre, c'est-à-dire la préface. Combinez ensuite la séquence d'ordre dans l'ordre global.
(2) Exemple:
(3) Réalisez avec Java
Import Java.util.array , 15,35,25,53,51}; (a [i]);} publicVoid Sort (int [] data, int Left, int droit) {// todo-goneraltedMethod Stub if (Left <droite) {/ / / find intermédiaire index int Centre = (gauche + droit) / 2; ;}} PublicVoid Merge (int [] Data, int Left, int Center, int droit) {// TODO-GONEORATES INT [DATA.LENDIE]; int Mid = Center + 1; Array intermédiaire Int Project = Left; int tmp = gauche; ]) {tmparr [tiers ++] = données [gauche ++];} else {tmparr [tiers ++] = data [mid ++]; ++];} while (gauche <= central) {tmparr [troisième ++] = données [gauche ++]; tmp <= droite) {data [tmp] = tmparr [tmp ++];} system.out. println (arrays.tostring (données));8. Tri de base
(1) Idées de base: uniforme toutes les valeurs de comparaison (entiers positifs) à la même longueur de nombre, et le nombre de chiffres courts est constitué avant zéro. Ensuite, à partir de la position la plus basse et du tri à tour à tour. Cela deviendra une séquence ordonnée de la position la plus basse au tri les plus élevés.
(2) Exemple:
(3) Réalisez avec Java
Import java.util.arraylist; , 54,101,56,17,18,23,34,15,35,25,53,51}; {System.out.println (a [i]);}} public void Sort (int [] array) {// Déterminez d'abord le nombre de tripages de tri; int max = array [0]; <array.length; i ++) {if (array [i]> max {max = array [i];}} int time = 0; // bit de jugement; while (max> 0) {max / = 10; Time ++;} // Créer 10 files d'attente; ins> (); queue.add (queue1);} // allocation et collection secondaires du temps; <Array; J <Array; int) math.pow (10, i i 10, i); 0; = queue.get (k);Ce qui précède est tout le contenu de cet article.