Algorithmique : Le Tri Par Tas
Transcription
Algorithmique : Le Tri Par Tas
PR01TriParTas.doc !"# $%# %$$& ' , + + / , ** ( . . *0+ ) * / . 3 ( + * + , (+ * ,+ * ,01+ . *- + ' ,, *, +, *3 3 , * 1 * *, + * * + ,, 4 *, + 1 + .5 ++ , *3 +, , *+ 4 ++ + !4 * . * - ,* * * 5 1+ 2 3 *- . 4 , 7 .3 3 4 4 4 3 5 7 5 7 5 --%4 * + . *- , * * * 65 * 5 * ) + ,* ' 4 3 . 3 + * + ,, + * . * ,* + 4 . "$04 5 + --- * *4 7 . * . / . * + ,* 7 , 8 ' . 4 1 + )* + + . + / . 9 + !* . / . 0+ * 4 +3, + + ,* ++ + 1 . ,, +, . 81 + + + * 7 + 3 * 61 + *) . * 3 - : *,, ( 4 + + + * *, * ; 4 + 3 3 . *( 3. 1 * - + 4 3 3 -' # ++ *,, * * 2 1 + * + 4/ * - + * *, * *. 04 Page 1 sur 8 * + 6 . *,, *) *, "$01 7, ,+ * 8 4 *, * 8 7 + 8 ) + / 3 3 ,0 * *, * 1 . 6 * * + ,, + . * 5 + * "$< * . * * PR01TriParTas.doc ! ' ( +5 / * 6 ( . / + $ %01 * = )* 0 ,, ) + ) . 4 ,, " * ? # 1 . . *- 1 + @! A + + CD$0 /*) CD$0 3 / . A + B CE . A *) B0 I# ) I# E ) $E +5 3 I# +I# J ? E!K I# # I E$1 !( * ( + 1 +I# + . A *) B . A *) B . A + . A + B + + *) *) *) # % I *6 EI * 6 @!K # I' + EI * 6 K . A + BE K B # I' . I# ) ,, ( 3 I# *) E+ # I ; N H $ F G F . # B # % # I / ' " * + ,* H # IJ J ? + K# I *) K # I * +5 I# K # I!E +K# I? . ) *L , ! + . *) % 4 ' ' ( / 1*) 1 3 , . & ' 4 +5 4 >* * 0 + # # %K # I M // 3/ H ) + * +5 I# I# OE$0 P/*) OE$ 0 0 . A + BCE . A *) B 0 +E . A *) BK . A *) BE . A + . A + BE +K + E*) K *) E*) # %K ) BK Q H E$K Q Q / 0 , ! 1 +! +% +R +& 7 5 5 2 7 7 5 6 6 M 3 ,, U 3 * * * + ) * 3 . * + '4 3 3 *(+ * * &) S1"1T %4 U 4 7 S E! " E% T ER % E& Page 2 sur 8 + (+ ( ' PR01TriParTas.doc ) @ 2 , 2 + 34 + + 2 + + + ) ) 3 . 4 2 + /) 2 + - + V ,* + * " % # 3 Tableau Taille Position Procédure Supprimer Si (Position= = 1) alors (taille taille-1) fin Si Calcul de la position des fils par rapport au père : Les Index Les deux Index sont t’ils inférieurs ou égaux à la taille du tableau ? Fils Gauche Fils Droit O/N? N/O? STOP Hors Course Hors Course 2 hors course =sortie, pas de fils ! On choisit le plus petit des deux Fils pour élire l’éventuel remplaçant, si il y en à qu’1, il devient l’éventuel remplaçant. Le Remplaçant est-il plus petit que son Père ? On intervertit les valeurs du père et du fils. O/N? STOP Tableau Taille Index Remplaçant Page 3 sur 8 *-3 3 * . 0 + +. * . () 5 2 +. 6 PR01TriParTas.doc + + * *!* ) ,, . 4 ++ ' , ; + ( * * ++ + + * ,) ) ,4 * *) 34 . * . / + . + ) ; " +# + ,* * ' , 1 , + 1 + )1( + * , -' ++ , ' = *5 *) = ) * *-* 6!01 +U . 01+ ) *, , * . * * . 4 * ,, ( + ,* 3 *3 3 , 1' ,* , *3 -3 * * 4 + ,* + * + + ( * . 3 4 + / + ) ( 4 ) * % 4 ++ " +# 4 . (7 ' 81 ' - *, * * + ,* , )1 -6 , 7 2 = 8 : + * , ++ 1 2 1( ) * ) * -* 6* ,, 4 - 4 & ++ ? * / # . * 1 + /+ *- 1 + 13 13 * A + A . 0 1 + E !0 . . B B $ 2! A B F 3 3* /3 * /+ /+ I%0K I%0@! DI 0 /3 * D * 0 $ + 3 F / . A 3* B C . + 3* + 3 A 3 B0 F F /* * CD$0 / . A + BD . A + B0 + . A + B . A + B . A + . A + B + ++ / . 1 1 + B 0 F F ) ) + * ++ 1* + (!4 Page 4 sur 8 ++ 17 + 8* = , PR01TriParTas.doc ( ' " . * + * ## # + W H * * K K 3 K 3* K +K # # ? # # # # # # # # ? + . *, 3 + L* 6* + U * +5 L* 6* 3 L* 6* 3 * . + ) ) (L , # # + 3/ + H ++ + ,* * + +5 + + * +5 + + 5 ) * 3 * .+ * 5 EE ! 0 . A + . A I I EI BE . A I BE$K 2!K# # ), BK * , ) ,O Q 3 3* E/+ E/+ # I%0K# I%0@!K 3/ 3 * H DI * L* 6* 3 + * 3 * 0 3/ 3 * + DI 0 * E$K E3 K Q H 3/ . A 3* + + BC . E3 * E3 A 3 K B0 K Q 3/ * H * OE$ 0 # # J 3/ H * . . A + ,($ BD . L ,6 A + 3 B0 +E . A + BK . A + BE . A + BK . A + BE +K # # ) )+ ( . + ++ / . 1 1 + 0K 3 Q Q / ) @ 2 + 34 2 + + 2 ) + 5 ) 2 + + 3 2 + , + * , *+ * + ) ) 5 +. * . () . 4 . , ++ + ( X 4 * + ( + + 5 * 6 *6 /+5 3 0 3 + , ) Page 5 sur 8 + ,* ) O 7 : ) 8 1 PR01TriParTas.doc ) 0 , ! 1 +& +R +% +! 2 5 6 7 5 7 7 6 6 Y *(+ S1"1 T %4 * ++ U 7 ++% E& ++ T ER ++ " E% 5 7 .3 4 3 4 5 5 7 Suppression dans « Tableau », du Minimum, ajout de l’élément supprimé dans HeapSort1 .Puis suppressions successives dans HeapSort1 et reconstruction de « Tableau » en ordre croissant. --- 4 ++ S E! 4 . * &) , , ) ,( + - ,* ++ 1 * + * , ++ ( . * 65 + * * ,* ' * 5 + ) 4 + 3 4 7 5 --- 1 + ,* + * ' * 1 + + * 2 /+ ,01+ * * + 4 ++ *- + * ) % , . * . + + 1 *- 5 + O % * ++ 7 . 8 ,, 4 ' 7 . 9 + !8 , ++ ,4 * . 7 . 8 7 . 9 + ! 9 + 8 * . & !/ # . 6 81 + ,* * * ' 7 ( 6 1 1 " 0 + * .# 6 ' + 6 * . * 7 ? ' 11 ' 11 K *!( 3 . AB ' / 1 9 + 1 . 9 + 3 / E!KCEI K@@0 H E . ABK ' / 1 9 Q !0 F '* ! ( 1 . 9 !1 9 + 3 /' E!K ' CEI K ' @@0 H E . 9 + !A !BK . A ' BE K ++ / . 9 + !1 Q 1 !0K ' ) / ) 6 + + !0K 3 . 9 + !A !B . A ' B ++ / . 9 + F + ' ++ , +,,* *) = , 4 Page 6 sur 8 * 6 1 *,' ( ,, 9 + 1 !0K PR01TriParTas.doc ) @ 2 5 ) 2 + ( +, 0 , ! ) + "+ 12$ + + 3= , 8 ) ,3 * 1 + XR* . . 3 1 *) * . + ,* *, *-' ++ 4 + 4 ( . + ! )* /) ! * 3 * 2 = 4 * *-3 3 5 + *- + *,3 . 2 - 5* 4 ,) 04 * 2 1 , , * *4 J ,4 4 + . ) ( + (+ 5 +1 3 3 *,+ , 4 ; * . 1 ++ + * , . . 1 , * 4 ) 3 = ( ) + +5 4 % * 3 , - + 1 * + ,* ) 3 ' 5 6 *) + 7 3 + *-' ++ * 9 8* ++ 4 -. ) - - + ) 65 %:;9 65 %:;9 + *1 + -) * + 4 /? @ 2 5 + ( * 0 2 +, 4 2 5* Page 7 sur 8 *,3 *-' ++ 4 PR01TriParTas.doc & + ' ( %/ # 1 . *- 0 ' " . * + # H ? 1' 1 9 1 * $ (/ ' ' 1' 1 2!0 3 . A@!B 9 %/ 1' 1 . I *!( 0 9 K %/ . @!B 1P 9 EI 1 !0 F 0K K 3 / E!KCEI K@@0 H E . A !BK ++ 9 . A 9 Q 3 . A !B ++ 9 . A 9 1K 3 / E$KCI K@@0 H ' EK E . A@!BK ' 9 %/ 1 P' 1. Q F 9 9 %/ . @!BE K 1P 9 1 !0K / ) ) , 4 3 5 J' 9 6 + * ( ++ . 4 7 + 5 +1 %1 ) ( +5 ) 3 3 *W / + * + ) + * 3 ) ) ) 04 3 * ,* * 5 Légende : Tailles « virtuelles » livrée à ' 9 Tailles « virtuelles » livrée à ++ 9 %1* - 7 %1* - 7 :!$ ,, 1 3 7 !$ 8O 6 +1 ,1 * . * * !1* / @!0 + = ,+ Z * + *4 . 6 - ** * . 7+ + 8 ) *- 8 = ) 3 , * . 1* 6 * 6 . 6 1 2 * = , ( * * + . 1 *- * 4 ) 7 8 ( ' ++ . 7 + + 81 ) * 6 ) < 0 , ! J 12$ + 4 Y+ )4 + % + , * 1 + "+ 4 , . ,4 1 + ( . + X&* 4 -: ) *, + %1 3 * , , % * * 4 3 * + + + + , ) *1 + % , + 4 ! + * +, + '+ 6 ) %1 ' -+ , ( + *+ % ' + 5 ( + ,* + ,* ++ 4J 5 + ++ ( + ,* ++ 4 6 +,* + Page 8 sur 8 + / 4 [ + 4 04