begin process at 2012 02 11 04:37:53
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

Recherche dans un array (binary search)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Recherche dans un array (binary search)

mardi 3 octobre 2006 à 02:21:11 | Recherche dans un array (binary search)

mast

Bonjour! J'ai une array qui contient des prénoms, qui s'appelle x et une autre qui contient un nom seulement (name). J'ai écrit une function de "binary search" qui cherche si name se trouve dans l'array x. Pour une raison que j'ignore ça ne fonctionne qu'avec quelque noms. Note, mon array de prénoms, x, est en ordre alphabétique. Voici mon code, si vous avez des idées laissez-moi un message :) Merci! - Alex ------------- int BSearch(char x[][NMAX], char name[]) { int left, right, mid; left = 0; right = LSIZE; while (left < right) { mid = (left+right) / 2; if (strcmp(name, x[mid]) > 0) { left = mid + 1; } else if (strcmp(name, x[mid]) < 0) { right = mid - 1; } else { return mid + 1; } } return -1; }
mardi 3 octobre 2006 à 02:40:15 | Re : Recherche dans un array (binary search)

mast

Okay je viens de voir que le code était pas très clair ;) alors je post un url vers la source http://paste.lisp.org/display/27246

- Alex
mardi 3 octobre 2006 à 17:54:26 | Re : Recherche dans un array (binary search)

ria94

Je pense ke l'erreur viens de la ligne
 mid = (left+right) / 2;
Je t'explique vite fait imaginons t'as un tableau de 100noms
Dans ton premier tour de boucle tu prend
mid=(0+100)/2= 50
mettons que le noms soit dans la partie superieur
tu vas donc faire  left = mid + 1; -->left = 50+1=51
tu repasses dans ta boucle et tu refais un
mid = (left+right) / 2; --> (51+100)/2 = 75.5 
Donc forcement tu check pa tous les cas


Essaie ca :

int
BSearch(char x[][NMAX], char name[])
{
        int left, right, mid;
        left = 0;
        right = LSIZE;
        mid = (left+right) / 2;

        while(left < right)
        
{
                if(strcmp(name, x[mid]) > 0)
                
{
                        mid++;
                
}

                elseif(strcmp(name, x[mid]) < 0)
                
{
                        mid--;
                
}

                else
                }
               
   return mid + 1;
                
}
                              leff++;
        
}

        return -1;
}
mardi 3 octobre 2006 à 18:56:40 | Re : Recherche dans un array (binary search)

mast

J'ai trouve l'erreur hier, la boucle while aurait du etre while (left <= right), sinon on saute le dernier cas ;)

Merci
- Alex


Cette discussion est classée dans : mid, array, name, left, binary


Répondre à ce message

Sujets en rapport avec ce message

Equivalent de left() right() et mid() en c++ [ par guitoulefoux ] Bonjour,Débutant en c++ j'aimerais savoir quel est l'équivalent de left(), right(), et mid() (vb) en c++.Je pense qu'en C++ il faut faire un truc du s Cas d'école... [ par ClemB ] Bonjour, J'ai le soucis suivant dans le code ci après :typedef struct { const char *Name; ... ...} TOTO;bool AAA (TOTO *retour){ CString sTest = Ecrire en c++ avec regsetvalue dans une reg_binary ? [ par Krad ] Bonjour,Je sais écrire des caractères dans des cles de registre avec la fonction regsetvalue mais je n'arrive pas à écrire de valeur en hexadécimal da socket winsock grrr [ par dekai ] Voilà mon pb lorsque je tente un send ou recv j'obtient une erreur et ej comprends pas pourquoi. Merci de m'aider.Voici le code (je travaille sous dev C++ dialog box right to left [ par petro666 ] bonjour j'aimerais avoir un petit renseignement concernant les dialog boxj'ai un code en C++ qui contient des dialog box et qui génère des dllle probl Visual C++ et lecture de fichier [ par xakal ] J'ai des problemes avec les fichiers et C++.Plus exactement Visual C++, ce que je cherche a faire c?est de lire un fichier et l?afficher ligne a ligne Probleme Hostname Visual C++ [ par Steph115 ] Salut a tous voila j'ai vu que la fonction gethostbyname defini comme suit : This function gets host data corresponding to a host name.struct hostent Comment lire un Char array ligne par ligne et le modifier? [ par fcoutel ] Bonjour!J'ai cree un char array dans un autre program qui contient des info "encryptees" static char tcl_script[] = "«¨íðéåøäí¦üã\n" "«¨Ìíåçæûüúéüíû¨ unicode et bianire help!!!! [ par youpiyoyo ] bon j'ai visité cette page d'abord:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_unicode.99_.stream_i.2f.o_in_text_ tableau de chaines [ par ashboody ] const char * Ini_GetPrivateProfileString (...);mytype myfunc (char **RegisteredChannels_Name);{strcpy( RegisteredChannels_Name[ChannelIndex],


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,936 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales