<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Recherche par dichotomie]]></title><description><![CDATA[<p dir="auto"><strong>Recherche par dichotomie</strong></p>
<p dir="auto">La recherche dichotomique est un moyen efficace de trouve l'indice d'un nombre dans un <strong>tableau trié</strong>. Par rapport à une recherche classique, vous ferez moins de lecture dans votre tableau.</p>
<p dir="auto"><strong>Principe :</strong></p>
<hr />
<p dir="auto">C'est très simple !</p>
<p dir="auto">Prenons le tableau contenant 10 éléments : <strong>1 | 4 | 7 | 8 | 10 | 15 | 18 | 19 | 32 | 35</strong></p>
<p dir="auto"><strong>Celui-ci est trié de manière croissante et il faut qu'il le soit impérativement !</strong></p>
<p dir="auto"><strong>Théorie :</strong></p>
<p dir="auto">Comme dans une recherche simple, vous allez devoir faire une boucle. Mais cette fois <strong>vous commencerez au milieu du tableau</strong> (donc ici à l'indice n°5).</p>
<p dir="auto">Si votre <strong>nombre est inférieur</strong> au nombre de l'indice du milieu (tab[5]), alors <strong>vous vous concentrerez que sur la partie inférieure</strong> (gauche) de votre tableau.</p>
<p dir="auto">Si votre <strong>nombre est supérieur</strong> au nombre de l'indice du milieu (tab[5]), alors <strong>vous vous concentrerez que sur la partie supérieure</strong> (droite) de votre tableau.</p>
<p dir="auto">Vous recommencerez jusqu'à trouver l'indice du nombre.</p>
<p dir="auto"><strong>Exemple :</strong> Je cherche l'indice du nombre 8.</p>
<ol>
<li>Je me place à la moitié de mon tableau (indiceMilieu = 5) et je regarde si mon nombre est plus grand, plus petit ou égal. Il est plus petit donc je me concentre sur les nombres d'indices compris entre 0 et 5.</li>
<li>Je me place à la moitié ( (0 + 5) / 2 = 2). tab[2] &lt; 8 donc je concentre sur les nombres d'indices compris entre 2 et 5.</li>
<li>Je me place à la moitié ( (2 + 5) / 2 = 3) . tab[3] = 8 donc je peux arrêter et retourner l'indice correspondant.</li>
</ol>
<p dir="auto">En conclusion, je n'ai que 3 itérations avec la recherche dichotomique. Avec une rechercher classique, j'aurais eu 4 itérations.</p>
<p dir="auto">Ceci est peut-être insignifiant dans ce cas mais sur des grands tableaux, la recherche dichotomique est très utile.</p>
<p dir="auto"><strong>Implémentation en Java :</strong></p>
<hr />
<p dir="auto">Petit cadeau, je vous offre la fonction java qui permet de faire une recherche par dichotomie mais je vous conseil de la coder vous même car elle n'est pas très dure et c'est toujours instructif de faire les chose sois-même <img src="http://new.melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=aa95655114f" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /></p>
<blockquote>
<pre><code>public static int rechercherDichotomie(int[] tab, int nb)
{
    int indMin, indMax, indMid;

    // Si votre tableau n'est pas trié, triez le avant !

    // On prend l'ensemble du tableau au départ
    indMin = 0;
    indMax = tab.length;

    while ((indMax - indMin) &gt; 1)
    {
    	// On prend le milieu entre indMin et indMax
        indMid = ((indMin + indMax) / 2);

        // On détermine si le nombre est supérieur, inférieur ou égal à tab[indMid]
        if (nb &gt; this.tab[indMid]) {
        	indMin = indMid;
        } else if (nb &lt; this.tab[indMid]) {
        	indMax = indMid;
        } else {
        	return indMid;
        }
    }

    // Retourne -1 si l'indice n'a pas été trouvé
    return -1;
}
</code></pre>
</blockquote>
]]></description><link>http://new.melinyel.net/topic/1823/recherche-par-dichotomie</link><generator>RSS for Node</generator><lastBuildDate>Thu, 21 May 2026 18:38:05 GMT</lastBuildDate><atom:link href="http://new.melinyel.net/topic/1823.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 23 Jan 2016 13:03:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Recherche par dichotomie on Sat, 23 Jan 2016 22:07:00 GMT]]></title><description><![CDATA[<p dir="auto">Merci pour ce petit cours <img src="emoticons/default_smile.png" alt=":)" title=":)" class=" img-fluid img-markdown" /></p>
]]></description><link>http://new.melinyel.net/post/17624</link><guid isPermaLink="true">http://new.melinyel.net/post/17624</guid><dc:creator><![CDATA[vfrz]]></dc:creator><pubDate>Sat, 23 Jan 2016 22:07:00 GMT</pubDate></item></channel></rss>