<?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>open-pitu, el blog lliure en català &#187; C++</title>
	<atom:link href="http://openpitu.com/tag/c/feed/" rel="self" type="application/rss+xml" />
	<link>http://openpitu.com</link>
	<description>Blog dedicat al software lliure i la programació.</description>
	<lastBuildDate>Mon, 03 Sep 2012 15:37:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Cerca Dicotòmica</title>
		<link>http://openpitu.com/2010/06/21/cerca-dicotomica/</link>
		<comments>http://openpitu.com/2010/06/21/cerca-dicotomica/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 08:14:04 +0000</pubDate>
		<dc:creator>Pitu Sabadí</dc:creator>
				<category><![CDATA[How-to's]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[CPP]]></category>
		<category><![CDATA[Programació]]></category>
		<guid isPermaLink="false">http://localhost/open-pitu/?p=16</guid>
		<description><![CDATA[[How-to del blog antic.]
Algorisme de cerca en un vector. Una cerca dicotòmica necessita l'entrada ordenada. A grans trets, el que fa és dividir en dos el vector i seguir buscant en el tros de vector on pot estar el nostre valor.]]></description>
			<content:encoded><![CDATA[<div class="besocial"><ul class="center"><li><a class="besocial-meneame" id="besocial-meneame-1" rel="nofollow" href="http://www.meneame.net/submit.php?url=http://openpitu.com/2010/06/21/cerca-dicotomica/&amp;title=Cerca%20Dicot%C3%B2mica" title="Submit this to Meneame"><span class="besocial-text">Meneame</span></a></li><li><a class="besocial-divoblogger" id="besocial-divoblogger-1" rel="nofollow" href="http://divoblogger.com/submit.php?url=http://openpitu.com/2010/06/21/cerca-dicotomica/&amp;title=Cerca%20Dicot%C3%B2mica" title="Submit this to Divoblogger"><span class="besocial-text">Divoblogger</span></a></li><li><a class="besocial-bitacoras" id="besocial-bitacoras-1" rel="nofollow" href="http://bitacoras.com/anotaciones/openpitu.com/2010/06/21/cerca-dicotomica/" title="Submit this to Bitacoras.com"><span class="besocial-text">Bitacoras</span></a></li><li><a class="besocial-delicious" id="besocial-delicious-1" rel="nofollow" href="http://www.delicious.com/save?v=5&amp;noui&amp;url=http://openpitu.com/2010/06/21/cerca-dicotomica/&amp;title=Cerca%20Dicot%C3%B2mica" title="Bookmark this in Delicious"><span class="besocial-text">Delicious</span></a></li><li><a class="besocial-facebook" id="besocial-facebook-1" rel="nofollow" href="http://www.facebook.com/sharer.php?u=http%3A%2F%2Fopenpitu.com%2F2010%2F06%2F21%2Fcerca-dicotomica%2F&amp;t=Cerca%20Dicot%C3%B2mica&amp;src=sp" title="Share this on Facebook"><span class="besocial-text">Facebook</span></a></li><li><a class="besocial-twitter" id="besocial-twitter-1" rel="nofollow" href="http://twitter.com/share?url=http%3A%2F%2Fopenpitu.com%2F2010%2F06%2F21%2Fcerca-dicotomica%2F&amp;text=Cerca%20Dicot%C3%B2mica&via=openpitu" title="Tweet this"><span class="besocial-text">Twitter</span></a></li><g:plusone></g:plusone></ul></div>
<p>[How-to del blog antic.]</p>
<p>Algorisme de cerca en un vector. Una cerca dicotòmica necessita l&#8217;entrada ordenada. A grans trets, el que fa és dividir en dos el vector i seguir buscant en el tros de vector on pot estar el nostre valor.</p>
<pre>#include &lt;iostream&gt;
#include &lt;vector&gt;
#include "stdlib.h"
using namespace std;
static void mostra_taula ( vector&lt;int&gt;&amp; t ) {
	int i = 0;
	while( i &lt; t.size() ){
		cout &lt;&lt; t[i] &lt;&lt; " " ;
		i++;
	}
	cout &lt;&lt; endl;
}
static void fusiona( vector&lt;int&gt;&amp; t, int inici, int mig, int fi) {
    vector&lt;int&gt; aux(fi - inici + 1);
    int i = inici; // index part esquerra del vector
    int j = mig + 1; // index part dreta del vector
    int k = 0; // index del vector aux
    //mentre no acabi cap index de t, l'element mÃ©s petit es copia al vector aux
    while ( i &lt;= mig and j &lt;= fi ) {
        if ( t[i] &lt; t[j] ) {
            aux[k] = t[i];
            ++i;
        }
        else {
            aux[k] = t[j];
            ++j;
        }
        ++k;
    }
 	//cas en quÃ¨ un vector ja s'ha copiat al complert
    while (i &lt;= mig) {
        aux[k] = t[i];
        ++i;
        ++k;
    }
    while (j &lt;= fi) {
        aux[k] = t[j];
        ++j;
        ++k;
    }
    // copia els elements guardats a aux a t
    for (int n = 0; n &lt; aux.size(); ++n){
       	t[inici + n] = aux[n];
    }
}
static void merge_sort( vector&lt;int&gt;&amp; t, int inici, int fi) {
    if ( inici &lt; fi ) {
        int mig = ( inici + fi ) / 2;
        merge_sort( t, inici, mig);
        merge_sort( t, mig + 1, fi);
        fusiona( t, inici, mig, fi);
    }
}
static int cerca_dicotomica( vector&lt;int&gt; t, int x, int l, int tamany ){
	int m = (l + tamany)/2;
	if( l== tamany-1 )
		return l;
	if( x &lt; t[m] )
		return cerca_dicotomica( t, x, l, m );
	else
		return cerca_dicotomica( t, x, m, tamany);
}
int main () {
  	//MODIFICA LA VARIABLE TAMANY PER DONAR MIDA A LA TAULA.
	int tamany = 8;
	//MODIFICA ELS DOS NOMBRES DONATS
	int x = 2;
	int y = 3;
	//ES GUARDA EL RESULTAT A LA VARIABLE
	int resultat;
	int resultatX, resultatY;
	//VECTOR AMB EL QUE ES TREBALLA
	vector&lt;int&gt; taula( tamany );
	int i = 0, aux;
	for (int i=0; i&lt;taula.size(); ++i) {
  		aux = rand( ) % tamany;
  		taula[i] = aux;
	}
	//mostra_taula( taula );
	merge_sort( taula, 0, tamany);
	mostra_taula( taula );
	resultatX = cerca_dicotomica( taula, x, 0, tamany );
	resultatY = cerca_dicotomica( taula, y, 0, tamany );
	cout &lt;&lt;" NOMBRE DE CELES ENTRE "&lt;&lt; x &lt;&lt; " i "&lt;&lt; y &lt;&lt;" = "&lt;&lt; resultatY - resultatX + 1 &lt;&lt; endl;
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://openpitu.com/2010/06/21/cerca-dicotomica/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
