Maison > Problème commun > Comment trier par tas

Comment trier par tas

Libérer: 2019-06-12 09:24:36
original
5196 Les gens l'ont consulté

Comment trier par tas

1. Construire le tas initial :

Lors de l'initialisation du tas, tous les nœuds non-feuilles sont filtrés.

L'indice du dernier élément non terminal est [n/2] arrondi vers le bas, le filtrage ne doit donc commencer qu'à partir du [n/2]ème élément arrondi vers le bas et s'ajuster de l'arrière vers l'avant.

Par exemple, étant donné un tableau, construisez d'abord un arbre binaire complet basé sur les éléments du tableau.

Ensuite, à partir du dernier nœud non-feuille, la comparaison et l'échange sont effectués à partir du nœud parent, de l'enfant gauche et de l'enfant droit à chaque fois. L'échange peut empêcher le nœud enfant de satisfaire les propriétés du tas. , donc à chaque fois Après cet échange, les nœuds enfants échangés doivent être réajustés.

2. Effectuez le tri des tas :

Après avoir obtenu le tas initial, vous pouvez trier.

Le tri par tas est un tri par sélection. Le tas initial créé est la zone non ordonnée initiale.

Lorsque le tri commence, l'élément supérieur du tas est affiché en premier (car c'est la valeur la plus élevée), et l'élément supérieur du tas et le dernier élément sont échangés de cette façon, la nième position (. c'est-à-dire la dernière position) est utilisée comme zone ordonnée, et les positions n-1 précédentes sont toujours des zones non ordonnées. Après avoir obtenu le tas, échangez les éléments supérieur et final du tas afin que la longueur. de la zone ordonnée devient 2. . .

Continuez cette opération, réajustez les éléments restants dans le tas, puis sortez l'élément supérieur du tas vers la zone triée. Chaque échange donne -1 pour la zone non ordonnée et +1 pour la zone ordonnée. Ce processus est répété jusqu'à ce que la longueur de la zone ordonnée atteigne n-1 et que le tri soit terminé.

3. Exemple de tri de tas :

Tout d'abord, établissez la structure de tas initiale comme indiqué :

Comment trier par tas

Ensuite , échangez l'élément en haut du tas et le dernier élément. À ce stade, la dernière position est utilisée comme zone ordonnée (la zone ordonnée est affichée en jaune), puis ajustez le tas des autres zones non ordonnées. le grand tas supérieur, échangez les éléments supérieurs et derniers du tas. La position de l'avant-dernier élément...

Comment trier par tas

Répétez ce processus :

Comment trier par tas

Enfin, l'expansion de la zone ordonnée est terminée. Autrement dit, le tri est terminé :

Comment trier par tas

Il ressort du processus de tri que si vous Si vous souhaitez obtenir l'ordre croissant, créez un grand tas supérieur, si vous souhaitez obtenir un ordre décroissant, créez un petit tas supérieur.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal