Démontrer ou réfuter: Il existe un algorithme de tri général qui peut trier un tableau de longueur
n
dansO(n)
si le tableau est min-heap-ordonné.Prouver ou réfuter: Il existe un algorithme de tri général qui peut trier un tableau de longueur n dans O (n) s'il est min-heap-ordonné
Demain, j'écris examen et très peur de travail de preuve ... Voici que je trouve de plus et examen très difficile pour les résoudre comme prévu ...:/
Je pense que je sais, mais mon réponse la raison n'est pas bonne. Donc, ma raison est que l'instruction est fausse parce que quand array est min-heap-ordered, imaginons-le comme un arbre, alors les feuilles de l'arbre ne seront pas triées. Et ce tableau est trié est nécessaire pour le trier en O(n)
. Pour cette raison déclaration est erronée ..
Ici, j'ai exemple, je fais mon propre arbre commandé min tas:
1
/\
3 2
/\ \
8 99 7
A partir de ce que nous faisons ensemble, nous avons 1, 3, 2, 8, 99, 7
Vous voyez, ce n'est triée à tout sauf min-tas-ordonné. Impossible de trier ceci dans O(n)
.
Très sûr que mes résoudre est mal pls pouvez-vous me montrer comment vous le faites correctement et désolé pour mon anglais, je fais de mon mieux ..
Je pense que mes résoudre est mademoiselle, je dois prouver ce min-tas-ordonné n'a pas de feuilles triées? Mais comment?
Votre solution semble correcte puisque vous avez réussi à trouver un contre-exemple. Cependant, je ne suis pas très sûr de cela. Quoi qu'il en soit, bonne chance demain! – tenepolis
Theres un algorithme appelé [Heapsort] (https://en.wikipedia.org/wiki/Heapsort). Votre question porte essentiellement sur la deuxième étape de cet algorithme. – Paul
Mon intuition est que cela peut être réfuté par induction sur la profondeur du tas. Parce que vous avez déjà besoin de passer l'ordre de n fois la fusion de deux tableaux fusionnés, il est impossible d'être linéaire dans l'ensemble. Je pense que c'est très analogue à la fusion. – HuStmpHrrr