Si vous déplacez l'élément max à l'arrière de votre tableau de tas et puis supprimez-le, vous ne serez pas laissé avec quoi que ce soit dans votre tableau lorsque vous avez terminé. Ainsi, votre algorithme, qui supprime le maximum, ne va pas aboutir à un tableau trié de vos éléments d'origine.
mise à jour basée sur modifier OP:
Vous pouvez le faire de cette façon. La première méthode, cependant, vous permet de trier en place. Votre méthode nécessite O (N) stockage supplémentaire.
Une autre Edit:
Il est difficile de voir exactement quelles hypothèses vous faites sur le premier algorithme, mais comme je pense à mon commentaire fait ci-dessous, il semble probable que MaxHeapify(A,1)
devrait probablement MaxHeapify(A, n)
. Vous passerez généralement un tableau et sa taille, ou dans ce cas, le nombre d'éléments que vous voulez organiser en tas. Cela peut être inutile si vous supposez que n est une variable globale.
Quelle est la nature exacte de votre problème avec heapsort? Pourquoi pensez-vous que vous devriez supprimer le maximum? – mcandre
Je vais stocker tous ces éléments supprimés dans un tableau qui sera trié – user355002