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 ?
2) C'est un peu comme avec les propositions des politiques, j'aime bien
connaître le détail, histoire de voir le coût réel du supplément « non
excessif » ; entre autres questions qui me viennent à l'esprit, serait-ce un
paramètre supplémentaire ? retourner une structure ? avec ou sans restrict ?
2) C'est un peu comme avec les propositions des politiques, j'aime bien
connaître le détail, histoire de voir le coût réel du supplément « non
excessif » ; entre autres questions qui me viennent à l'esprit, serait-ce un
paramètre supplémentaire ? retourner une structure ? avec ou sans restrict ?
2) C'est un peu comme avec les propositions des politiques, j'aime bien
connaître le détail, histoire de voir le coût réel du supplément « non
excessif » ; entre autres questions qui me viennent à l'esprit, serait-ce un
paramètre supplémentaire ? retourner une structure ? avec ou sans restrict ?
Je ne me souviens pas d'une fois ou ce que tu proposes aurais evite de
devoir le faire.
Je ne me souviens pas d'une fois ou ce que tu proposes aurais evite de
devoir le faire.
Je ne me souviens pas d'une fois ou ce que tu proposes aurais evite de
devoir le faire.
D'ailleurs, une recherche dichotomique dans une liste, ça
va être dur...
D'ailleurs, une recherche dichotomique dans une liste, ça
va être dur...
D'ailleurs, une recherche dichotomique dans une liste, ça
va être dur...
Jean-Marc Bourguet a écrit :
> Je ne me souviens pas d'une fois ou ce que tu proposes aurais evite de
> devoir le faire.
>
Tu veux faire un solveur de Boggle
(cf. http://massiveboggle.fr/game/play).
Tu as un lexique qui fait presque 400000 mots (l'officiel du scrabble
version 5) sous forme de fichier texte. Tu charges ce lexique en mémoire
(pour pouvoir accéder aux mots autrement que séquentiellement).
Jean-Marc Bourguet a écrit :
> Je ne me souviens pas d'une fois ou ce que tu proposes aurais evite de
> devoir le faire.
>
Tu veux faire un solveur de Boggle
(cf. http://massiveboggle.fr/game/play).
Tu as un lexique qui fait presque 400000 mots (l'officiel du scrabble
version 5) sous forme de fichier texte. Tu charges ce lexique en mémoire
(pour pouvoir accéder aux mots autrement que séquentiellement).
Jean-Marc Bourguet a écrit :
> Je ne me souviens pas d'une fois ou ce que tu proposes aurais evite de
> devoir le faire.
>
Tu veux faire un solveur de Boggle
(cf. http://massiveboggle.fr/game/play).
Tu as un lexique qui fait presque 400000 mots (l'officiel du scrabble
version 5) sous forme de fichier texte. Tu charges ce lexique en mémoire
(pour pouvoir accéder aux mots autrement que séquentiellement).
Tu as un lexique qui fait presque 400000 mots (l'officiel du scrabble
version 5) sous forme de fichier texte. Tu charges ce lexique en mémoire
(pour pouvoir accéder aux mots autrement que séquentiellement).
Tu as un lexique qui fait presque 400000 mots (l'officiel du scrabble
version 5) sous forme de fichier texte. Tu charges ce lexique en mémoire
(pour pouvoir accéder aux mots autrement que séquentiellement).
Tu as un lexique qui fait presque 400000 mots (l'officiel du scrabble
version 5) sous forme de fichier texte. Tu charges ce lexique en mémoire
(pour pouvoir accéder aux mots autrement que séquentiellement).
C'est un peu HS mais on peut la récupérer quelque part cette liste de
mots ?
C'est un peu HS mais on peut la récupérer quelque part cette liste de
mots ?
C'est un peu HS mais on peut la récupérer quelque part cette liste de
mots ?
Par exemple ici :
http://www.madfix.com/ods/
Par exemple ici :
http://www.madfix.com/ods/
Par exemple ici :
http://www.madfix.com/ods/
Jean-Marc Bourguet a écrit :
Je ne me souviens pas d'une fois ou ce que tu proposes aurais evite de
devoir le faire.
Tu veux faire un solveur de Boggle
(cf. http://massiveboggle.fr/game/play).
Tu as un lexique qui fait presque 400000 mots (l'officiel du scrabble
version 5) sous forme de fichier texte. Tu charges ce lexique en mémoire
(pour pouvoir accéder aux mots autrement que séquentiellement).
L'algorithme de résolution du boggle est facile, c'est en fait un DFS. Tu
vas être amené à répondre à ce genre de questions : comment trouver le
premier mot du lexique qui commence par 'K' alors que cette lettre n'est
pas un mot figurant dans le lexique en sorte que bsearch va renvoyer nul.
Pourtant, bsearch aura examiné dans son algorithme (sauf bol particulier)
les mots JUXTATROPICAUX (d'index 215226) et KA (d'indice 215227), c'est
dommage de ne pouvoir l'utiliser. Donc, si on ne veut pas se contenter
d'une recherche séquentielle (qui d'ailleurs tournera sans lenteur sur un
P4) il faut se recoder une recherche dichotomique, quelle plaie !
Jean-Marc Bourguet a écrit :
Je ne me souviens pas d'une fois ou ce que tu proposes aurais evite de
devoir le faire.
Tu veux faire un solveur de Boggle
(cf. http://massiveboggle.fr/game/play).
Tu as un lexique qui fait presque 400000 mots (l'officiel du scrabble
version 5) sous forme de fichier texte. Tu charges ce lexique en mémoire
(pour pouvoir accéder aux mots autrement que séquentiellement).
L'algorithme de résolution du boggle est facile, c'est en fait un DFS. Tu
vas être amené à répondre à ce genre de questions : comment trouver le
premier mot du lexique qui commence par 'K' alors que cette lettre n'est
pas un mot figurant dans le lexique en sorte que bsearch va renvoyer nul.
Pourtant, bsearch aura examiné dans son algorithme (sauf bol particulier)
les mots JUXTATROPICAUX (d'index 215226) et KA (d'indice 215227), c'est
dommage de ne pouvoir l'utiliser. Donc, si on ne veut pas se contenter
d'une recherche séquentielle (qui d'ailleurs tournera sans lenteur sur un
P4) il faut se recoder une recherche dichotomique, quelle plaie !
Jean-Marc Bourguet a écrit :
Je ne me souviens pas d'une fois ou ce que tu proposes aurais evite de
devoir le faire.
Tu veux faire un solveur de Boggle
(cf. http://massiveboggle.fr/game/play).
Tu as un lexique qui fait presque 400000 mots (l'officiel du scrabble
version 5) sous forme de fichier texte. Tu charges ce lexique en mémoire
(pour pouvoir accéder aux mots autrement que séquentiellement).
L'algorithme de résolution du boggle est facile, c'est en fait un DFS. Tu
vas être amené à répondre à ce genre de questions : comment trouver le
premier mot du lexique qui commence par 'K' alors que cette lettre n'est
pas un mot figurant dans le lexique en sorte que bsearch va renvoyer nul.
Pourtant, bsearch aura examiné dans son algorithme (sauf bol particulier)
les mots JUXTATROPICAUX (d'index 215226) et KA (d'indice 215227), c'est
dommage de ne pouvoir l'utiliser. Donc, si on ne veut pas se contenter
d'une recherche séquentielle (qui d'ailleurs tournera sans lenteur sur un
P4) il faut se recoder une recherche dichotomique, quelle plaie !
Antoine Leca a écrit :
2) C'est un peu comme avec les propositions des politiques, j'aime bien
connaître le détail, histoire de voir le coût réel du supplément « non
excessif » ; entre autres questions qui me viennent à l'esprit, serait-ce
un
paramètre supplémentaire ? retourner une structure ? avec ou sans
restrict ?
Comment fonctionne une recherche dichotomique ? elle finit par encadrer la
clé par deux éléments consécutifs du tableau. En fait, pas tout à fait, si
la recherche a du bol, elle peut trouver la réponse avant d'avoir encadré
la clé. Par exemple si la liste est
int t[7]= {5, 9, 10, 19, 34, 34, 45}
le premier pivot est 19 (index (0+6)/2=3) et si la valeur cherchée est
justement 19, bsearch va s'arrêter là et renvoyer l'adresse
correspondante.
Par convention, on aurait pu décider que l'adresse renvoyée serait celle
de l'élément directement supérieur et NULL si on sort à droite du tableau
de valeur. Donc je ne vois pas ce que ça coûte, c'est epsilon en plus, on
renvoie un pointeur, pareil, ça marche même dans le cas où on a du bol.
Pour reprendre mon exemple ci-dessus, si la clé vaut 20, on renvoie t+4,
si la clé est 34, on renvoie t+4 ou t+5 et si la clé est 50 on renvoie
NULL.
Toutefois, ça présente l'inconvénient qu'on n'est pas sûr que la clé soit
présente lorsque le retour est non NULL et ça oblige l'utilisateur à
tester le retour pour être sûr.
De toute façon, si ça n'a pas été fait ainsi c'est que ça ne présentait
pas suffisamment d'intérêt pour une majorité de gens.
Je viens de regarder l'implémentation de Plauger et à ma grande surprise,
elle n'est pas récursive mais ça doit sans doute être plus efficace.
Antoine Leca a écrit :
2) C'est un peu comme avec les propositions des politiques, j'aime bien
connaître le détail, histoire de voir le coût réel du supplément « non
excessif » ; entre autres questions qui me viennent à l'esprit, serait-ce
un
paramètre supplémentaire ? retourner une structure ? avec ou sans
restrict ?
Comment fonctionne une recherche dichotomique ? elle finit par encadrer la
clé par deux éléments consécutifs du tableau. En fait, pas tout à fait, si
la recherche a du bol, elle peut trouver la réponse avant d'avoir encadré
la clé. Par exemple si la liste est
int t[7]= {5, 9, 10, 19, 34, 34, 45}
le premier pivot est 19 (index (0+6)/2=3) et si la valeur cherchée est
justement 19, bsearch va s'arrêter là et renvoyer l'adresse
correspondante.
Par convention, on aurait pu décider que l'adresse renvoyée serait celle
de l'élément directement supérieur et NULL si on sort à droite du tableau
de valeur. Donc je ne vois pas ce que ça coûte, c'est epsilon en plus, on
renvoie un pointeur, pareil, ça marche même dans le cas où on a du bol.
Pour reprendre mon exemple ci-dessus, si la clé vaut 20, on renvoie t+4,
si la clé est 34, on renvoie t+4 ou t+5 et si la clé est 50 on renvoie
NULL.
Toutefois, ça présente l'inconvénient qu'on n'est pas sûr que la clé soit
présente lorsque le retour est non NULL et ça oblige l'utilisateur à
tester le retour pour être sûr.
De toute façon, si ça n'a pas été fait ainsi c'est que ça ne présentait
pas suffisamment d'intérêt pour une majorité de gens.
Je viens de regarder l'implémentation de Plauger et à ma grande surprise,
elle n'est pas récursive mais ça doit sans doute être plus efficace.
Antoine Leca a écrit :
2) C'est un peu comme avec les propositions des politiques, j'aime bien
connaître le détail, histoire de voir le coût réel du supplément « non
excessif » ; entre autres questions qui me viennent à l'esprit, serait-ce
un
paramètre supplémentaire ? retourner une structure ? avec ou sans
restrict ?
Comment fonctionne une recherche dichotomique ? elle finit par encadrer la
clé par deux éléments consécutifs du tableau. En fait, pas tout à fait, si
la recherche a du bol, elle peut trouver la réponse avant d'avoir encadré
la clé. Par exemple si la liste est
int t[7]= {5, 9, 10, 19, 34, 34, 45}
le premier pivot est 19 (index (0+6)/2=3) et si la valeur cherchée est
justement 19, bsearch va s'arrêter là et renvoyer l'adresse
correspondante.
Par convention, on aurait pu décider que l'adresse renvoyée serait celle
de l'élément directement supérieur et NULL si on sort à droite du tableau
de valeur. Donc je ne vois pas ce que ça coûte, c'est epsilon en plus, on
renvoie un pointeur, pareil, ça marche même dans le cas où on a du bol.
Pour reprendre mon exemple ci-dessus, si la clé vaut 20, on renvoie t+4,
si la clé est 34, on renvoie t+4 ou t+5 et si la clé est 50 on renvoie
NULL.
Toutefois, ça présente l'inconvénient qu'on n'est pas sûr que la clé soit
présente lorsque le retour est non NULL et ça oblige l'utilisateur à
tester le retour pour être sûr.
De toute façon, si ça n'a pas été fait ainsi c'est que ça ne présentait
pas suffisamment d'intérêt pour une majorité de gens.
Je viens de regarder l'implémentation de Plauger et à ma grande surprise,
elle n'est pas récursive mais ça doit sans doute être plus efficace.