Votre travail est de trier les couleurs du drapeau hollandais. La seule primitive à votre disposition permet d'échanger deux lignes données. De plus, vous ne devez pas créer de nouvelles variables (à l'exception de quelques indices).
À la réflexion, on peut le faire en temps linéaire, en triant un élément à chaque étape de la boucle. Vous devriez peut-être réviser comment se passe le tri par insertion, car le tri du drapeau hollandais est une variation sur le thème. La principale différence est que vous n'avez pas un seul point d'insertion, mais 3...
apresBleu
est initialisé à 0. Assurez vous de n'avoir que des
cellules bleues entre 0 et apresBleu
à tout moment.blancRouge
est initialisé à taille-1. Assurez vous de n'avoir
que des cellules rouges après blancRouge
.avantBlanc
est iniitialisé à taille-1. Assurez vous de n'avoir
que des cellules blanches entre avantBlanc
et
blancRouge
.apresBleu
et avantBlanc
.apresBleu
et effectuez les échanges qui s'imposent. La
boucle s'arrête quand apresBleu
devient plus grand que
avantBlanc
.