diff --git a/lessons/tris/stack_sort_pseudocode.txt b/lessons/tris/stack_sort_pseudocode.txt new file mode 100644 index 0000000000000000000000000000000000000000..fde2e0c9026fd523b1c1e7e31f71970548515bfe --- /dev/null +++ b/lessons/tris/stack_sort_pseudocode.txt @@ -0,0 +1,37 @@ +type Array_Int; // type tableau d'entiers à 1 dimension +type Pile_Int; // type pile d'entiers + +// Retourne "a < b" si <op> = "<", "a >= b" si <op> = ">=", +// "true" si <op> = "" et "false" sinon +function condition(a,b : Integer; op : String) return Boolean; + +// Transfère les éléments de <pile_1> à <pile_2> +// tant que condition(sommet(pile_1),val,op) est vrai +procedure transfert(pile_1, pile_2 : Pile_Int; + val: Integer; op : String); + +// Trie à l'aide de 2 piles +procedure trier(tab : Array_Int) + pile_g,pile_d : Pile_Int; +begin + // parcourt le tableau <tab> + for i in 0..tab.length loop + // transfère les éléments de <pile_g> à <pile_d> + // tant que sommet(pile_g) < tab[i] + transfert(pile_g,pile_d,tab[i],"<"); + // transfère les éléments de <pile_d> à <pile_g> + // tant que sommet(pile_d) >= tab[i] + transfert(pile_d,pile_g,tab[i],">="); + // empile l'élément <tab[i]> dans <pile_g> + empiler(pile_g,tab[i]); + end loop; + + // transfère tous les éléments de <pile_d> à <pile_g> + transfert(pile_d,pile_g,0,""); + + // transfère tous les éléments de <pile_g> dans <tab> + for i in 0..tab.length loop + depiler(pile_g,tab[i]); + end loop; +end Trier; +