Juste un avis perso : le retour de la fonction bsearch est peu exploitable.
Bien souvent, face à une liste croissante, on ne se préoccupe pas
essentiellement de savoir si un élément donné s'y trouve ou ne s'y trouve
pas, on cherche à savoir où il est placé dans la liste (et éventuellement
hors de la liste à gauche ou à droite). Or, quel que soit l'algorithme
utilisé par bsearch (recherche séquentielle ou dichotomique), bsearch
serait en mesure sans coût supplémentaire excessif de donner cette
position. Hélas bsearch se contente de donner une réponse binaire. Et je
trouve particulièrement agaçant d'avoir à me recoder un truc aussi
classique qu'une recherche dichotomique, pas vous ?
Juste un avis perso : le retour de la fonction bsearch est peu exploitable.
Bien souvent, face à une liste croissante, on ne se préoccupe pas
essentiellement de savoir si un élément donné s'y trouve ou ne s'y trouve
pas, on cherche à savoir où il est placé dans la liste (et éventuellement
hors de la liste à gauche ou à droite). Or, quel que soit l'algorithme
utilisé par bsearch (recherche séquentielle ou dichotomique), bsearch
serait en mesure sans coût supplémentaire excessif de donner cette
position. Hélas bsearch se contente de donner une réponse binaire. Et je
trouve particulièrement agaçant d'avoir à me recoder un truc aussi
classique qu'une recherche dichotomique, pas vous ?
Juste un avis perso : le retour de la fonction bsearch est peu exploitable.
Bien souvent, face à une liste croissante, on ne se préoccupe pas
essentiellement de savoir si un élément donné s'y trouve ou ne s'y trouve
pas, on cherche à savoir où il est placé dans la liste (et éventuellement
hors de la liste à gauche ou à droite). Or, quel que soit l'algorithme
utilisé par bsearch (recherche séquentielle ou dichotomique), bsearch
serait en mesure sans coût supplémentaire excessif de donner cette
position. Hélas bsearch se contente de donner une réponse binaire. Et je
trouve particulièrement agaçant d'avoir à me recoder un truc aussi
classique qu'une recherche dichotomique, pas vous ?
Bonjour,
Juste un avis perso : le retour de la fonction bsearch est peu exploitable.
Bien souvent, face à une liste croissante, on ne se préoccupe pas
essentiellement de savoir si un élément donné s'y trouve ou ne s'y trouve
pas, on cherche à savoir où il est placé dans la liste (et éventuellement
hors de la liste à gauche ou à droite). Or, quel que soit l'algorithme
utilisé par bsearch (recherche séquentielle ou dichotomique), bsearch serait
en mesure sans coût supplémentaire excessif de donner cette position. Hélas
bsearch se contente de donner une réponse binaire. Et je trouve
particulièrement agaçant d'avoir à me recoder un truc aussi classique qu'une
recherche dichotomique, pas vous ?
Bonjour,
Juste un avis perso : le retour de la fonction bsearch est peu exploitable.
Bien souvent, face à une liste croissante, on ne se préoccupe pas
essentiellement de savoir si un élément donné s'y trouve ou ne s'y trouve
pas, on cherche à savoir où il est placé dans la liste (et éventuellement
hors de la liste à gauche ou à droite). Or, quel que soit l'algorithme
utilisé par bsearch (recherche séquentielle ou dichotomique), bsearch serait
en mesure sans coût supplémentaire excessif de donner cette position. Hélas
bsearch se contente de donner une réponse binaire. Et je trouve
particulièrement agaçant d'avoir à me recoder un truc aussi classique qu'une
recherche dichotomique, pas vous ?
Bonjour,
Juste un avis perso : le retour de la fonction bsearch est peu exploitable.
Bien souvent, face à une liste croissante, on ne se préoccupe pas
essentiellement de savoir si un élément donné s'y trouve ou ne s'y trouve
pas, on cherche à savoir où il est placé dans la liste (et éventuellement
hors de la liste à gauche ou à droite). Or, quel que soit l'algorithme
utilisé par bsearch (recherche séquentielle ou dichotomique), bsearch serait
en mesure sans coût supplémentaire excessif de donner cette position. Hélas
bsearch se contente de donner une réponse binaire. Et je trouve
particulièrement agaçant d'avoir à me recoder un truc aussi classique qu'une
recherche dichotomique, pas vous ?
Bonjour,
Juste un avis perso : le retour de la fonction bsearch est peu exploitable.
Bien souvent, face à une liste croissante, on ne se préoccupe pas
essentiellement de savoir si un élément donné s'y trouve ou ne s'y trouve
pas, on cherche à savoir où il est placé dans la liste (et éventuellement
hors de la liste à gauche ou à droite). Or, quel que soit l'algorithme
utilisé par bsearch (recherche séquentielle ou dichotomique), bsearch
serait en mesure sans coût supplémentaire excessif de donner cette
position. Hélas bsearch se contente de donner une réponse binaire. Et je
trouve particulièrement agaçant d'avoir à me recoder un truc aussi
classique qu'une recherche dichotomique, pas vous ?
Bonjour,
Juste un avis perso : le retour de la fonction bsearch est peu exploitable.
Bien souvent, face à une liste croissante, on ne se préoccupe pas
essentiellement de savoir si un élément donné s'y trouve ou ne s'y trouve
pas, on cherche à savoir où il est placé dans la liste (et éventuellement
hors de la liste à gauche ou à droite). Or, quel que soit l'algorithme
utilisé par bsearch (recherche séquentielle ou dichotomique), bsearch
serait en mesure sans coût supplémentaire excessif de donner cette
position. Hélas bsearch se contente de donner une réponse binaire. Et je
trouve particulièrement agaçant d'avoir à me recoder un truc aussi
classique qu'une recherche dichotomique, pas vous ?
Bonjour,
Juste un avis perso : le retour de la fonction bsearch est peu exploitable.
Bien souvent, face à une liste croissante, on ne se préoccupe pas
essentiellement de savoir si un élément donné s'y trouve ou ne s'y trouve
pas, on cherche à savoir où il est placé dans la liste (et éventuellement
hors de la liste à gauche ou à droite). Or, quel que soit l'algorithme
utilisé par bsearch (recherche séquentielle ou dichotomique), bsearch
serait en mesure sans coût supplémentaire excessif de donner cette
position. Hélas bsearch se contente de donner une réponse binaire. Et je
trouve particulièrement agaçant d'avoir à me recoder un truc aussi
classique qu'une recherche dichotomique, pas vous ?
??
Vous ne confondriez pas le retour de bsearch(), un void* pointant vers
l'élément ou un élément trouvé, ou (void*)0 si pas trouvé, et le
prototype de la fonction de comparaison à fournir à bsearch() ?
??
Vous ne confondriez pas le retour de bsearch(), un void* pointant vers
l'élément ou un élément trouvé, ou (void*)0 si pas trouvé, et le
prototype de la fonction de comparaison à fournir à bsearch() ?
??
Vous ne confondriez pas le retour de bsearch(), un void* pointant vers
l'élément ou un élément trouvé, ou (void*)0 si pas trouvé, et le
prototype de la fonction de comparaison à fournir à bsearch() ?
Pierre Maurette a écrit :Vous ne confondriez pas le retour de bsearch(), un void* pointant vers
l'élément ou un élément trouvé, ou (void*)0 si pas trouvé, et le
prototype de la fonction de comparaison à fournir à bsearch() ?
Non, je ne confonds pas. La réponse de bsearch est binaire dans la
mesure où si la clé n'est pas trouvée elle renvoie NULL et elle renvoie
la position de la clé dans le cas inverse.
Mais dans la pratique, ainsi au hasard :
*) exemple 1 : on a une grande liste de nombres premiers et on eut
l'utiliser pour écrire une fonction nextPrime ;
*) exemple 2 : on veut écrire un solveur de Boggle
quand on a une liste triée, on cherche souvent non pas à savoir si la
clé est ou pas dans la liste mais à connaitre le ou les voisins
immédiats de la clé.
Pierre Maurette a écrit :
Vous ne confondriez pas le retour de bsearch(), un void* pointant vers
l'élément ou un élément trouvé, ou (void*)0 si pas trouvé, et le
prototype de la fonction de comparaison à fournir à bsearch() ?
Non, je ne confonds pas. La réponse de bsearch est binaire dans la
mesure où si la clé n'est pas trouvée elle renvoie NULL et elle renvoie
la position de la clé dans le cas inverse.
Mais dans la pratique, ainsi au hasard :
*) exemple 1 : on a une grande liste de nombres premiers et on eut
l'utiliser pour écrire une fonction nextPrime ;
*) exemple 2 : on veut écrire un solveur de Boggle
quand on a une liste triée, on cherche souvent non pas à savoir si la
clé est ou pas dans la liste mais à connaitre le ou les voisins
immédiats de la clé.
Pierre Maurette a écrit :Vous ne confondriez pas le retour de bsearch(), un void* pointant vers
l'élément ou un élément trouvé, ou (void*)0 si pas trouvé, et le
prototype de la fonction de comparaison à fournir à bsearch() ?
Non, je ne confonds pas. La réponse de bsearch est binaire dans la
mesure où si la clé n'est pas trouvée elle renvoie NULL et elle renvoie
la position de la clé dans le cas inverse.
Mais dans la pratique, ainsi au hasard :
*) exemple 1 : on a une grande liste de nombres premiers et on eut
l'utiliser pour écrire une fonction nextPrime ;
*) exemple 2 : on veut écrire un solveur de Boggle
quand on a une liste triée, on cherche souvent non pas à savoir si la
clé est ou pas dans la liste mais à connaitre le ou les voisins
immédiats de la clé.
On 2008-10-01, candide wrote:
> Pierre Maurette a écrit :
>
>> Vous ne confondriez pas le retour de bsearch(), un void* pointant vers
>> l'élément ou un élément trouvé, ou (void*)0 si pas trouvé, et le
>> prototype de la fonction de comparaison à fournir à bsearch() ?
>
> Non, je ne confonds pas. La réponse de bsearch est binaire dans la
> mesure où si la clé n'est pas trouvée elle renvoie NULL et elle renvoie
> la position de la clé dans le cas inverse.
>
> Mais dans la pratique, ainsi au hasard :
>
> *) exemple 1 : on a une grande liste de nombres premiers et on eut
> l'utiliser pour écrire une fonction nextPrime ;
>
> *) exemple 2 : on veut écrire un solveur de Boggle
>
> quand on a une liste triée, on cherche souvent non pas à savoir si la
> clé est ou pas dans la liste mais à connaitre le ou les voisins
> immédiats de la clé.
Sauf que bsearch ne travaille pas avec des listes, mais avec des
tableaux, et qu'avec l'arithméique des pointeurs, quand tu as
l'adresse d'une donnée (et son type), ben, t'a les voisins...
D'ailleurs, une recherche dichotomique dans une liste, ça
va être dur...
On 2008-10-01, candide <candide@free.invalid> wrote:
> Pierre Maurette a écrit :
>
>> Vous ne confondriez pas le retour de bsearch(), un void* pointant vers
>> l'élément ou un élément trouvé, ou (void*)0 si pas trouvé, et le
>> prototype de la fonction de comparaison à fournir à bsearch() ?
>
> Non, je ne confonds pas. La réponse de bsearch est binaire dans la
> mesure où si la clé n'est pas trouvée elle renvoie NULL et elle renvoie
> la position de la clé dans le cas inverse.
>
> Mais dans la pratique, ainsi au hasard :
>
> *) exemple 1 : on a une grande liste de nombres premiers et on eut
> l'utiliser pour écrire une fonction nextPrime ;
>
> *) exemple 2 : on veut écrire un solveur de Boggle
>
> quand on a une liste triée, on cherche souvent non pas à savoir si la
> clé est ou pas dans la liste mais à connaitre le ou les voisins
> immédiats de la clé.
Sauf que bsearch ne travaille pas avec des listes, mais avec des
tableaux, et qu'avec l'arithméique des pointeurs, quand tu as
l'adresse d'une donnée (et son type), ben, t'a les voisins...
D'ailleurs, une recherche dichotomique dans une liste, ça
va être dur...
On 2008-10-01, candide wrote:
> Pierre Maurette a écrit :
>
>> Vous ne confondriez pas le retour de bsearch(), un void* pointant vers
>> l'élément ou un élément trouvé, ou (void*)0 si pas trouvé, et le
>> prototype de la fonction de comparaison à fournir à bsearch() ?
>
> Non, je ne confonds pas. La réponse de bsearch est binaire dans la
> mesure où si la clé n'est pas trouvée elle renvoie NULL et elle renvoie
> la position de la clé dans le cas inverse.
>
> Mais dans la pratique, ainsi au hasard :
>
> *) exemple 1 : on a une grande liste de nombres premiers et on eut
> l'utiliser pour écrire une fonction nextPrime ;
>
> *) exemple 2 : on veut écrire un solveur de Boggle
>
> quand on a une liste triée, on cherche souvent non pas à savoir si la
> clé est ou pas dans la liste mais à connaitre le ou les voisins
> immédiats de la clé.
Sauf que bsearch ne travaille pas avec des listes, mais avec des
tableaux, et qu'avec l'arithméique des pointeurs, quand tu as
l'adresse d'une donnée (et son type), ben, t'a les voisins...
D'ailleurs, une recherche dichotomique dans une liste, ça
va être dur...
Marc Boyer writes:On 2008-10-01, candide wrote:
> Pierre Maurette a écrit :
>
> Mais dans la pratique, ainsi au hasard :
>
> *) exemple 1 : on a une grande liste de nombres premiers et on eut
> l'utiliser pour écrire une fonction nextPrime ;
>
> *) exemple 2 : on veut écrire un solveur de Boggle
>
> quand on a une liste triée, on cherche souvent non pas à savoir si la
> clé est ou pas dans la liste mais à connaitre le ou les voisins
> immédiats de la clé.
Sauf que bsearch ne travaille pas avec des listes, mais avec des
tableaux, et qu'avec l'arithméique des pointeurs, quand tu as
l'adresse d'une donnée (et son type), ben, t'a les voisins...
D'ailleurs, une recherche dichotomique dans une liste, ça
va être dur...
Je crois qu'il voudrait que bsearch se comporte d'une maniere similaire a
std::equal_range en C++; mais il faut retourner plus qu'une simple
position.
Marc Boyer <Marc.Boyer@cert.onera.fr.invalid> writes:
On 2008-10-01, candide <candide@free.invalid> wrote:
> Pierre Maurette a écrit :
>
> Mais dans la pratique, ainsi au hasard :
>
> *) exemple 1 : on a une grande liste de nombres premiers et on eut
> l'utiliser pour écrire une fonction nextPrime ;
>
> *) exemple 2 : on veut écrire un solveur de Boggle
>
> quand on a une liste triée, on cherche souvent non pas à savoir si la
> clé est ou pas dans la liste mais à connaitre le ou les voisins
> immédiats de la clé.
Sauf que bsearch ne travaille pas avec des listes, mais avec des
tableaux, et qu'avec l'arithméique des pointeurs, quand tu as
l'adresse d'une donnée (et son type), ben, t'a les voisins...
D'ailleurs, une recherche dichotomique dans une liste, ça
va être dur...
Je crois qu'il voudrait que bsearch se comporte d'une maniere similaire a
std::equal_range en C++; mais il faut retourner plus qu'une simple
position.
Marc Boyer writes:On 2008-10-01, candide wrote:
> Pierre Maurette a écrit :
>
> Mais dans la pratique, ainsi au hasard :
>
> *) exemple 1 : on a une grande liste de nombres premiers et on eut
> l'utiliser pour écrire une fonction nextPrime ;
>
> *) exemple 2 : on veut écrire un solveur de Boggle
>
> quand on a une liste triée, on cherche souvent non pas à savoir si la
> clé est ou pas dans la liste mais à connaitre le ou les voisins
> immédiats de la clé.
Sauf que bsearch ne travaille pas avec des listes, mais avec des
tableaux, et qu'avec l'arithméique des pointeurs, quand tu as
l'adresse d'une donnée (et son type), ben, t'a les voisins...
D'ailleurs, une recherche dichotomique dans une liste, ça
va être dur...
Je crois qu'il voudrait que bsearch se comporte d'une maniere similaire a
std::equal_range en C++; mais il faut retourner plus qu'une simple
position.
Sauf que bsearch ne travaille pas avec des listes,
mais avec des
tableaux, et qu'avec l'arithméique des pointeurs, quand tu as
l'adresse d'une donnée (et son type), ben, t'a les voisins...
D'ailleurs, une recherche dichotomique dans une liste, ça
va être dur...
Sauf que bsearch ne travaille pas avec des listes,
mais avec des
tableaux, et qu'avec l'arithméique des pointeurs, quand tu as
l'adresse d'une donnée (et son type), ben, t'a les voisins...
D'ailleurs, une recherche dichotomique dans une liste, ça
va être dur...
Sauf que bsearch ne travaille pas avec des listes,
mais avec des
tableaux, et qu'avec l'arithméique des pointeurs, quand tu as
l'adresse d'une donnée (et son type), ben, t'a les voisins...
D'ailleurs, une recherche dichotomique dans une liste, ça
va être dur...
On 2008-10-01, Jean-Marc Bourguet wrote:
> Marc Boyer writes:
>> On 2008-10-01, candide wrote:
>> > Pierre Maurette a écrit :
>> >
>> > Mais dans la pratique, ainsi au hasard :
>> >
>> > *) exemple 1 : on a une grande liste de nombres premiers et on eut
>> > l'utiliser pour écrire une fonction nextPrime ;
>> >
>> > *) exemple 2 : on veut écrire un solveur de Boggle
>> >
>> > quand on a une liste triée, on cherche souvent non pas à savoir si la
>> > clé est ou pas dans la liste mais à connaitre le ou les voisins
>> > immédiats de la clé.
>>
>> Sauf que bsearch ne travaille pas avec des listes, mais avec des
>> tableaux, et qu'avec l'arithméique des pointeurs, quand tu as
>> l'adresse d'une donnée (et son type), ben, t'a les voisins...
>>
>> D'ailleurs, une recherche dichotomique dans une liste, ça
>> va être dur...
>
> Je crois qu'il voudrait que bsearch se comporte d'une maniere similaire a
> std::equal_range en C++; mais il faut retourner plus qu'une simple
> position.
Je ne sais pas ce qu'il veut exactement, mais bon, c'est quand même
pas très difficile à faire à partir de bsearch. Un coup de ++, un coup de --...
On 2008-10-01, Jean-Marc Bourguet <jm@bourguet.org> wrote:
> Marc Boyer <Marc.Boyer@cert.onera.fr.invalid> writes:
>> On 2008-10-01, candide <candide@free.invalid> wrote:
>> > Pierre Maurette a écrit :
>> >
>> > Mais dans la pratique, ainsi au hasard :
>> >
>> > *) exemple 1 : on a une grande liste de nombres premiers et on eut
>> > l'utiliser pour écrire une fonction nextPrime ;
>> >
>> > *) exemple 2 : on veut écrire un solveur de Boggle
>> >
>> > quand on a une liste triée, on cherche souvent non pas à savoir si la
>> > clé est ou pas dans la liste mais à connaitre le ou les voisins
>> > immédiats de la clé.
>>
>> Sauf que bsearch ne travaille pas avec des listes, mais avec des
>> tableaux, et qu'avec l'arithméique des pointeurs, quand tu as
>> l'adresse d'une donnée (et son type), ben, t'a les voisins...
>>
>> D'ailleurs, une recherche dichotomique dans une liste, ça
>> va être dur...
>
> Je crois qu'il voudrait que bsearch se comporte d'une maniere similaire a
> std::equal_range en C++; mais il faut retourner plus qu'une simple
> position.
Je ne sais pas ce qu'il veut exactement, mais bon, c'est quand même
pas très difficile à faire à partir de bsearch. Un coup de ++, un coup de --...
On 2008-10-01, Jean-Marc Bourguet wrote:
> Marc Boyer writes:
>> On 2008-10-01, candide wrote:
>> > Pierre Maurette a écrit :
>> >
>> > Mais dans la pratique, ainsi au hasard :
>> >
>> > *) exemple 1 : on a une grande liste de nombres premiers et on eut
>> > l'utiliser pour écrire une fonction nextPrime ;
>> >
>> > *) exemple 2 : on veut écrire un solveur de Boggle
>> >
>> > quand on a une liste triée, on cherche souvent non pas à savoir si la
>> > clé est ou pas dans la liste mais à connaitre le ou les voisins
>> > immédiats de la clé.
>>
>> Sauf que bsearch ne travaille pas avec des listes, mais avec des
>> tableaux, et qu'avec l'arithméique des pointeurs, quand tu as
>> l'adresse d'une donnée (et son type), ben, t'a les voisins...
>>
>> D'ailleurs, une recherche dichotomique dans une liste, ça
>> va être dur...
>
> Je crois qu'il voudrait que bsearch se comporte d'une maniere similaire a
> std::equal_range en C++; mais il faut retourner plus qu'une simple
> position.
Je ne sais pas ce qu'il veut exactement, mais bon, c'est quand même
pas très difficile à faire à partir de bsearch. Un coup de ++, un coup de --...
Je crois qu'il voudrait que bsearch se comporte d'une maniere similaire a
std::equal_range en C++;
mais il faut retourner plus qu'une simple
position.
Je crois qu'il voudrait que bsearch se comporte d'une maniere similaire a
std::equal_range en C++;
mais il faut retourner plus qu'une simple
position.
Je crois qu'il voudrait que bsearch se comporte d'une maniere similaire a
std::equal_range en C++;
mais il faut retourner plus qu'une simple
position.