Trie Dichotomique output erreur

Résolu/Fermé
domxaline - 28 mars 2016 à 14:26
 domxaline - 29 mars 2016 à 12:04
Bonjour,
j'écris ce programme de trie Dichotomique,

pendant l’exécution de celle ci, j'ai une erreur output

il s'affiche que "élément non trouvé"

même élément se trouve dans cette tableau, veuillez m'aidez svp

voilà mon programme:
import java.util.Scanner;
public class RechDicoTab1
{
    public static void main(String[] args)
    {
        int[]tab={4,5,6,7,8,9,10,11};
        System.out.println("Entrez élément à trouver");
        Scanner sc=new Scanner(System.in);
         
        int result=Test(sc.nextInt());
        if(result!=-1)
        {
            System.out.println("élément trouvé"+result);
        }
        else
        {
            System.out.println("élément non trouvé");
        }
 
    }
    public static int Test(int result1)
    {
        int[]tab={4,5,6,7,8,9,10,11};
        int a=1;
        int b=tab.length;
        int p=0;
        int i=0;
        boolean result=false;
        boolean recherche=false;
        int position =-1;
        do
        {
            p=((a+b)/2);
            if(result1==tab[p])
            {
                result=true;
                //System.out.println("élément trouvé");
                position=i;
            }
            else
            {
                if(result1>tab[p])
                {
                    a=p+1;
                }
                else
                {
                    if(result1<tab[p])
                    {
                        b=p-1;
                    }
                }
            }
             
        }while(result==true || (a>b));
         
        return position;
         
    }
 
}



5 réponses

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
28 mars 2016 à 18:47
Bonjour,

C'est compliqué tout ça...
Je m'étonnes toujours de te voir à ce même niveau depuis maintenant 7 ans que tu viens régulièrement poster des questions Java sur ce forum !

private static int binarySearch(int[] array, int fromIndex, int toIndex, int key) {
    int low = fromIndex;
    int high = toIndex - 1;
    while (low <= high) {
        int mid = (low + high) / 2;
        int midVal = array[mid];
        if (midVal < key)
            low = mid + 1;
        else if (midVal > key)
            high = mid - 1;
        else
            return mid;
    }
    return -1;
}

private static int binarySearch(int[] array, int key) {
    return binarySearch(array, 0, array.length, key);
}

public static void main(String[] args) {
    int[] tab = { 1, 3, 5, 7, 9 };
    System.out.println(binarySearch(tab, 0)); // -1: before the first
    System.out.println(binarySearch(tab, 1)); //  0: the first
    System.out.println(binarySearch(tab, 4)); // -1: not in middle
    System.out.println(binarySearch(tab, 5)); //  2: in middle
    System.out.println(binarySearch(tab, 9)); //  4: the last
    System.out.println(binarySearch(tab,10)); // -1: after the last
}
0
merci pour votre aide
"Je m'étonnes toujours de te voir à ce même niveau depuis maintenant 7 ans que tu viens régulièrement poster des questions Java sur ce forum ! "

oui je suis depuis 7 ans
j'ai aucune formation dans la programmation, ni je ne travail pas de dans,
je travail dans la sécurité,
je l'ai essaie que, quand j'ai un moment.
je prend le cours dans l'internet,et aidé par la forum
excusez moi pour ce lenteur
0
voilà j'ai corrigé mon programme, maintenant il marche
import java.util.Scanner;
public class RechDicoTab1 
{
	public static void main(String[] args) 
	{
		int[]tab={4,5,6,7,8,9,10,11};
		System.out.println("Entrez élément à trouver");
		Scanner sc=new Scanner(System.in);
		int x=sc.nextInt();
		recherche(tab,x);
		int position=recherche(tab,x);
		
		if(position>0)
		{
			System.out.println("L'élément "+x+" est trouvé en position "+position);
		}
		else
		{
			System.out.println("L'élément "+x+" n'est pas trouvé");
		}
	}

	private static int recherche(int[] tab, int elt) 
	{
		int n=tab.length-1;
		int a=1;
		int b=n;
		int p=0;
		int position=-1;
		do
		  {
			p=((a+b)/2);
			if(elt==tab[p])
			{
				position=p;
			}
			else if(tab[p]<elt)
				{
					a=p+1;
				}
			else 
				{
						b=p-1;
				}
		    }while(elt!=tab[p] && (a<=b));
		return position;
	}			
}
0
j'ai une question à vous poser

dans mon output,quand je demande chercher 0 élément, veut dire dans le tableau tab[0]4

dans l'output il me retourne

Entrez élément à trouver:
4

L'élément 4 n'est pas trouvé

pourtant 4 se trouve dans cette tableau, quelqu'un peut m'aider s'il vous plait
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ok j'ai trouvé mon erreur, ils sont trouvé dans les lignes suivante:

ligne 15 if(position>0) j'ai corrigé comme ceci if(position>-1

ensuite dans la

ligne 33 int a=1; je l'ai corrigé int a=0;

merci beaucoup
0