Soit T, un tableau dont les indices vont de 1 à n contenant des 0 et des 1 dans un ordre quelconque.
(a)Trouver un algorithme linéaire en temps et de complexité spatiale en O(1) pour trier ce tableau et retourner le nombre de 0, et ce, sans compter explicitement le nombre de 0 et de 1. Justifiez que votre algorithme est linéaire. Identifiez le type d’algorithme que vous avez conçu (vorace, programmation dynamique, etc.). Décrivez votre algorithme en pseudo-code.
(b) Pouvez-vous modifier votre algorithme pour résoudre le même problème mais où le tableau contient
des 0, 1 et 2 dans un ordre quelconque (en utilisant les mêmes contraintes qu’en (a)) ? Si oui, décrivez-en
les grandes lignes. L’algorithme doit avoir une complexité temporelle linéaire et une complexité spatiale
constante.
(c) Dans quelles conditions votre algorithme peut être généralisé pour des valeurs quelconques avec les
mêmes complexités spatiale et temporelle ?
Partager