<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Synoptic &#187; algorithme</title>
	<atom:link href="https://blog.developpez.com/walikworkshop/ptag/algorithme/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/walikworkshop</link>
	<description></description>
	<lastBuildDate>Fri, 12 Dec 2014 17:16:00 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Collection d&#8217;algorithmes</title>
		<link>https://blog.developpez.com/walikworkshop/p12805/non-classe/collection-dalgorithmes</link>
		<comments>https://blog.developpez.com/walikworkshop/p12805/non-classe/collection-dalgorithmes#comments</comments>
		<pubDate>Fri, 12 Dec 2014 17:16:00 +0000</pubDate>
		<dc:creator><![CDATA[Walik]]></dc:creator>
				<category><![CDATA[Non classé]]></category>
		<category><![CDATA[algorithme]]></category>
		<category><![CDATA[algorithmique]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/walikworkshop/?p=62</guid>
		<description><![CDATA[Collectionner les timbres c&#8217;est mal, collectionner les algorithmes c&#8217;est bien : Trie à bulle procédure tri_bulle(tableau T, entier n) &#160; &#160; &#160; &#160; répéter &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; échange_effectué = faux &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; pour j de 0 à n - 2 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; si T[j] &#38;gt; T[j + 1], alors &#160; &#160; &#160; &#160; &#160; [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Collectionner les  timbres c&rsquo;est mal, collectionner les algorithmes c&rsquo;est bien :</p>
<p><strong>Trie à bulle</strong></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">procédure tri_bulle(tableau T, entier n)<br />
&nbsp; &nbsp; &nbsp; &nbsp; répéter<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; échange_effectué = faux<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pour j de 0 à n - 2<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; si T[j] &amp;gt; T[j + 1], alors<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; échanger T[j] et T[j + 1]<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; échange_effectué = vrai<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fin si<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fin pour<br />
&nbsp; &nbsp; &nbsp; &nbsp; tant que échange_effectué = vrai<br />
fin procédure</div></div>
<p><strong>Trie fusion</strong></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">fonction trier(p, n)<br />
&nbsp; &nbsp; Q:= n/2 (division entière)<br />
&nbsp; &nbsp; P:= n-Q<br />
&nbsp; &nbsp; si P &amp;gt;= 2<br />
&nbsp; &nbsp; &nbsp; &nbsp; q:= trier(p, P)<br />
&nbsp; &nbsp; &nbsp; &nbsp; si Q &amp;gt;= 2 trier(q, Q)<br />
&nbsp; &nbsp; sinon<br />
&nbsp; &nbsp; &nbsp; &nbsp; q:= p.suivant<br />
&nbsp; &nbsp; fin<br />
&nbsp; &nbsp; q:= fusionner(p, P, q, Q)<br />
&nbsp; &nbsp; renvoyer q<br />
fin<br />
<br />
fonction fusionner(p, P, q, Q)<br />
&nbsp; &nbsp; répéter indéfiniment<br />
&nbsp; &nbsp; &nbsp; &nbsp; si valeur(p.suivant) &amp;gt; valeur(q.suivant) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; déplacer le maillon q.suivant après le maillon p<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; si Q = 1 quitter la boucle<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Q:= Q-1<br />
&nbsp; &nbsp; &nbsp; &nbsp; sinon<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; si P = 1<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tant que Q &amp;gt;= 1<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; q:= q.suivant<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Q:= Q-1<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fin<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; quitter la boucle<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fin<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; P:= P-1<br />
&nbsp; &nbsp; &nbsp; &nbsp; fin<br />
&nbsp; &nbsp; &nbsp; &nbsp; p:= p.suivant<br />
&nbsp; &nbsp; fin<br />
&nbsp; &nbsp; renvoyer q<br />
fin</div></div>
<p><strong>Trie rapide</strong></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">partitionner(tableau T, premier, dernier, pivot)<br />
&nbsp; &nbsp; échanger T[pivot] et T[dernier]<br />
&nbsp; &nbsp; j := premier<br />
&nbsp; &nbsp; pour i de premier à dernier - 1<br />
&nbsp; &nbsp; &nbsp; &nbsp; si T[i] &amp;lt;= T[dernier] alors<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; échanger T[i] et T[j]<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; j := j + 1<br />
&nbsp; &nbsp; échanger T[dernier] et T[j]<br />
&nbsp; &nbsp; renvoyer j<br />
<br />
&nbsp;tri_rapide(tableau t, entier premier, entier dernier)<br />
&nbsp; &nbsp;début<br />
&nbsp; &nbsp; &nbsp;si premier &amp;lt; dernier alors<br />
&nbsp; &nbsp; &nbsp; &nbsp;pivot := choix_pivot(t,premier,dernier)<br />
&nbsp; &nbsp; &nbsp; &nbsp;pivot := partitionner(t,premier, dernier,pivot)<br />
&nbsp; &nbsp; &nbsp; &nbsp;tri_rapide(t,premier,pivot-1)<br />
&nbsp; &nbsp; &nbsp; &nbsp;tri_rapide(t,pivot+1,dernier)<br />
&nbsp; &nbsp; &nbsp;fin si<br />
&nbsp; &nbsp;fin</div></div>
<p><strong>Trie par tas</strong></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">fonction tamiser(arbre,nœud,n):<br />
{descend arbre[nœud] à sa place, sans dépasser l'indice n}<br />
&nbsp; k:=nœud<br />
&nbsp; j:=2k<br />
&nbsp; tant que j&amp;lt;=n<br />
&nbsp; &nbsp; si j&amp;lt;n et arbre[j]&amp;lt;arbre[j+1]<br />
&nbsp; &nbsp; &nbsp; j:=j+1<br />
&nbsp; &nbsp; fin si<br />
&nbsp; &nbsp; si arbre[k]&amp;lt;arbre[j]<br />
&nbsp; &nbsp; &nbsp; échanger arbre[k] et arbre[j]<br />
&nbsp; &nbsp; &nbsp; k:=j<br />
&nbsp; &nbsp; &nbsp; j:=2k<br />
&nbsp; &nbsp; sinon<br />
&nbsp; &nbsp; &nbsp; terminer<br />
&nbsp; &nbsp; fin si<br />
&nbsp; fin tant que<br />
fin fonction<br />
<br />
fonction tri_par_tas(arbre,longueur):<br />
&nbsp; pour i:=longueur/2 a 1<br />
&nbsp; &nbsp; tamiser(arbre,i,longueur)<br />
&nbsp; fin pour<br />
&nbsp; pour i:=longueur a 2<br />
&nbsp; &nbsp; échanger arbre[i] et arbre[1]<br />
&nbsp; &nbsp; tamiser(arbre,1,i-1)<br />
&nbsp; fin pour<br />
fin fonction</div></div>
<p><strong>Recherche séquentielle</strong></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">fonction recherche_seq(tableau T, entier n, r)<br />
&nbsp; &nbsp;d = faux<br />
&nbsp; &nbsp;pour i:=0 a n<br />
&nbsp; &nbsp; &nbsp; &nbsp;Si T[i] = r <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;d = vrai<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;quitter la boucle<br />
&nbsp; &nbsp; &nbsp; &nbsp;fin si<br />
&nbsp; &nbsp;fin pour<br />
&nbsp; &nbsp;si d = vrai<br />
&nbsp; &nbsp; &nbsp; &nbsp;retourner i<br />
&nbsp; &nbsp;sinon <br />
&nbsp; &nbsp; &nbsp; &nbsp;retourner -1<br />
&nbsp; &nbsp;fin si<br />
fin fonction</div></div>
<p><strong>Recherche dichotomique</strong></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">fonction recherche_dic(tableau T, entier n, r)<br />
&nbsp; &nbsp;plage := n<br />
&nbsp; &nbsp;indice := 0<br />
&nbsp; &nbsp;t := -1<br />
&nbsp; &nbsp;tant que plage &amp;gt; 0<br />
&nbsp; &nbsp; &nbsp; si T[indice] = r<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;t := indice<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;quitter boucle<br />
&nbsp; &nbsp; &nbsp; fin si<br />
&nbsp; &nbsp; &nbsp; si indice = 0 et T[indice] &amp;gt; r<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; quitter boucle<br />
&nbsp; &nbsp; &nbsp; fin si<br />
&nbsp; &nbsp; &nbsp; plage /= 2<br />
&nbsp; &nbsp; &nbsp; si T[indice] &amp;gt; r<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; indice +:= plage<br />
&nbsp; &nbsp; &nbsp; sinon<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; indice -:= plage<br />
&nbsp; &nbsp; &nbsp; fin si<br />
&nbsp; &nbsp;retourner t<br />
fin fonction</div></div>
<p><strong>Pagination</strong></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">fonction pagination(tableau T, entier numero_page, entier lignes_par_page)<br />
&nbsp; &nbsp; &nbsp;taille_tableau := taille(taille_tableau)<br />
&nbsp; &nbsp; &nbsp;nb_page := taille_tableau % lignes_par_page<br />
&nbsp; &nbsp; &nbsp;si numero_page &amp;gt; a nb_page<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;retourner erreur<br />
&nbsp; &nbsp; &nbsp;fin si<br />
&nbsp; &nbsp; &nbsp;si numero_page := nb_page<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;reste_lignes = taille_tableau - nb_page * ligne_par_page<br />
&nbsp; &nbsp; &nbsp;sinon <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;reste_lignes := lignes_par_page<br />
&nbsp; &nbsp; &nbsp;fin si<br />
&nbsp; &nbsp; &nbsp;debut := numero_page * lignes_par_page<br />
&nbsp; &nbsp; &nbsp;fin := debut + reste_lignes<br />
&nbsp; &nbsp; &nbsp;retourner sous_tableau(tableau, debut, fin)<br />
&nbsp; &nbsp; fin fonction</div></div>
<p><strong>Affichage d&rsquo;arborescense</strong></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">fonction affiche_arbo(entier id)<br />
entier id_fils = base_de_donnee(id)<br />
chaine nom = base_de_donnee(id)<br />
ecrire(nom)<br />
si id_fils != NULL<br />
affiche_arbo(id)<br />
fin si<br />
fin fonction</div></div>
<p><strong>Préférence</strong></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">fonction Lecture(chanson)<br />
&nbsp; &nbsp; playList[chanson] += 1<br />
fin fonction<br />
fonction preference()<br />
&nbsp; &nbsp; &nbsp;retourner tri_fusion(playList)<br />
fin fonction</div></div>
<p><strong>Analyse de performance matérielle</strong></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">constante temps_reference = a<br />
constante repetition = b<br />
t1 = timestamp<br />
pour i:=0 a repetition<br />
&nbsp; &nbsp; tache()<br />
fin pour<br />
t2 = timestamp<br />
t = t2-t1<br />
ratio = 1 / t / temps_reference * 100<br />
ecrire ratio</div></div>
<p><strong>Range détection une seule comparaison</strong></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">fonction inRange(min, max, s)<br />
&nbsp; &nbsp; retourner (s-(max+1)) * (s-(min-1)) &amp;lt; 0<br />
fin fonction</div></div>
<p><strong>Un puzzle</strong></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">fonction creer_puzzle(tableau p)<br />
&nbsp; &nbsp; pour i:= 0 a taille(p)<br />
&nbsp; &nbsp; &nbsp; &nbsp; p[i][position_initiale] = i<br />
&nbsp; &nbsp; &nbsp; &nbsp; p[i][position_actuelle] = i<br />
&nbsp; &nbsp; fin pour<br />
&nbsp; &nbsp; retourner p<br />
fonction melange_puzzle(tableau p)<br />
&nbsp; &nbsp; t = taille(p)<br />
&nbsp; &nbsp; pour i:= 0 a t<br />
&nbsp; &nbsp; &nbsp; &nbsp; t_hasard[i] = i<br />
&nbsp; &nbsp; fin pour<br />
&nbsp; &nbsp; tt = t<br />
&nbsp; &nbsp; pour i:=0 a t<br />
&nbsp; &nbsp; &nbsp; &nbsp; h = hasard(tt)<br />
&nbsp; &nbsp; &nbsp; &nbsp; val = t_hasard[h]<br />
&nbsp; &nbsp; &nbsp; &nbsp; extraire(t_hasard[h])<br />
&nbsp; &nbsp; &nbsp; &nbsp;tt = tt - 1<br />
&nbsp; &nbsp; &nbsp; &nbsp;p[i][position_actuelle] = val<br />
&nbsp; &nbsp; fin pour<br />
&nbsp; &nbsp; desordre = t<br />
&nbsp; &nbsp; retourner p, desordre<br />
fin fonction<br />
fonction bouger(tableau p, entier indice, position, desordre)<br />
&nbsp; &nbsp; p[indice][postion_actuelle] = position<br />
&nbsp; &nbsp; si position == p[indice][position_initiale] alors desordre = desordre -1<br />
&nbsp; &nbsp; retourner p, desordre</div></div>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
