Salut à tous,

Je tente de régler un petit algorithme de recherche dans un tableau et j'ai des problèmes d'exécution. Je suis débutant à ce niveau.

Voila ce que j'ai :
La valeur x est celle que je cherche
78 ici comme exemple

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
        int tableau[] = { 2, 4, 10, 22, 34, 40, 56, 61, 78, 90 };
        int x = 78;
        int debut = 0;
        int fin = 9;
        int premiertier = (debut + fin) / 3;
        int deuxiemetier = (premiertier * 2);
 
        while ((debut < fin) && (x != tableau[premiertier])) {
 
            if (x < tableau[premiertier]) {
 
                fin = premiertier;
            }
            else if (x > tableau[deuxiemetier]) {
 
                debut = deuxiemetier;
            }
            else {
 
                debut = premiertier;
                fin = deuxiemetier;
            }
 
            premiertier = (debut + fin) / 3;
            deuxiemetier = (premiertier * 2);
        }
 
        if (tableau[premiertier] == x) {
 
            System.out.println("La valeur " + x + " se trouve à la position "
                    + premiertier);
        }
        else {
 
            System.out.println("La valeur n'a pas été trouvée");
        }
Voici le message d'erreur que j'obtiens :
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at dicho3.main(dicho3.java:17)
Quelqu'un saurait-il m'indiquer d'où peut venir le problème ?

Merci d'avance pour votre aide.