Bonjour à tous.
Alors sous maple, le but est de trouver la k-ieme plus grande valeur du tableau. Pour ce faire on me demande de le faire par partition.
voici ce que j'ai fait.
ça, normalement, ça met le 1er élément à sa bonne place (c'est le seul élément trié après) et tout les plus grand que lui se trouve à droite dans le tableau et les plus petits à sa gauche.Code:partition := proc (g, d) local i, v, l; global a, n; v := a[g]; l := g; for i from g to d do if v < a[i] then echange(i, l+1); l := l+1; fi; od: echange(g, l); l; end
ensuite, pour trouver la kieme :
et normalement ça trouve la kieme meilleur.Code:kMeilleurVente := proc (k, b, c) local h; global a, n; h := partition(b, c); if h = k-1 then h elif k-1 < h then kMeilleurVente(k, b, h) else kMeilleurVente(k, h, c) fi; a[k] end:
Seulement ça marche une fois sur 10 ... le reste du temps, j'ai le droit à un jolie message rose me disant qu'il y à trop de récursivité. Mais j'arrive pas à voir où est ma faute.
Si quelqu'un pouvai m'aider.
merci d'avance.
-----