View on GitHub

club-lecture

Chapitre 6 - Heapsort

note: tri par tas https://fr.wikipedia.org/wiki/Tri_par_tas

nouvelle technique de conception : utiliser une structure de données (tas)

6.1 Heaps

Tas = arbre binaire complet (tout les noeds d’un niveau sont utilisé avant de commencer les noeuds du niveau inferieur)

Acces aux parent et enfants, pour A[i] :

implementation en utilisant les bitshift

height = nombre de niveau avec la racine. Pour un tas de n elements : height = Theta(log n)

procédures :

6.2 Maintaining the heap property

prendre le plus petit des sous noeuds et le descendre. Recusion

6.3 Building a heap

applique MAX-HEAPIFY sur chaque noeud qui n’est pas une feuille (neud terminal)

invariant : chaque noeud i+1, i+2,… est la racine d’un max-heap initialisation : i=[n/2], [n/2]+1, [n/2]+2,… sont des feuilles et donc des racines de max-heap maintenance : apres chaque iteration, les noeuds sont triés aussi termination : n=1, tous les noeuds sont triés

BUILD-MAX-HEAP : O(n)

6.4 The heapsort algorithm

BUILD-MAX-HEAP puis extraire chaque element avec MAX-HEAPIFY

6.5 Priority queues

max-priority queue :