On m'a donné une tâche pour trier les nombres dans la pile . En utilisant onze opérations: p> ma fonction de tri p> Ma fonction Trier la pile, je pense qu'il faut trop d'étapes pour trier. J'ai besoin de suggestions ou de conseils sur la manière de le faire trier la pile avec moins d'étapes prises.
Code complet en ligne p> p> A code> d'entiers dans l'ordre croissant en utilisant deux piles A code> et b code>.
Swap A code> - Échangez les 2 premiers éléments en haut de la pile A code> li>
Swap b code> - Échangez les 2 premiers éléments en haut de la pile B code>. LI>
SA code> et sb code> en même temps. LI>
push a code> - Prenez le premier élément en haut de B code> et mettez-le en haut de A < / code>. li>
push b code> - Prenez le premier élément en haut de A code> et mettez-le en haut de B < / code>. li>
pivoter a code> - Défilez tous les éléments de la pile A code> par 1. Le premier élément devient
le dernier. li>
rotation b code> - Défilez tous les éléments de la pile B code> par 1. Le premier élément devient
le dernier. li>
ra code> et rb code> en même temps. LI>
rotation A code> - Décalageez tous les éléments de la pile A code> par 1. Le dernier élément
devient le premier. li>
rotation b code> - Décalage tous les éléments de la pile B code> par 1. Le dernier élément
devient le premier. li>
rra code> et rrb code> en même temps. li>
ol>
3 Réponses :
donné deux piles A et B, où A est remplie d'une permutation aléatoire d'éléments et de B est vide et une variable temporaire t-mesure de contenir un élément (et un compteur mais le compteur ne compte pas) Vous pouvez trier Une commande ascendante en b par: p>
Vous pouvez (et devrait) mettre tout cela dans une seule boucle, bien sûr. P>
Ceci est vraiment un problème de deux file d'attente, car les opérations de rotation tournent efficacement une pile en une file d'attente. Dans ce cas, une sorte de fusion de bas en bas peut être effectuée, ce qui serait relativement rapide. P>
Utilisation d'une liste liée (au lieu d'un tableau) pour implémenter la pile / la file d'attente accélérerait la rotation. P>
Voici une solution en Java.
@Polikdir Comment est-ce un duplicata?, Les deux questions sont totalement différentes.