Aprendendo a Programar Programando em Linguagem C - FSM
Aprendendo a Programar Programando em Linguagem C - FSM
Aprendendo a Programar Programando em Linguagem C - FSM
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
componente central repete-se a pesquisa <strong>em</strong> relação à "primeira metade" da relação; se o el<strong>em</strong>ento<br />
pesquisado for maior repete-se a pesquisa <strong>em</strong> relação à "segunda metade" da relação. Por ex<strong>em</strong>plo, uma<br />
pesquisa do número 7 na relação {1, 3, 4, 5, 6, 8, 10, 11, 12, 15, 18, 19, 20, 21, 22, 25, 26} começaria<br />
comparando-se 7 com 12; como 7 < 12, pesquisa-se 7 na relação {1, 3, 4, 5, 6, 8, 10, 11}; para isto comparase<br />
7 com 5 e, como 7 > 5, pesquisa-se este valor na relação {6, 8, 10, 11}; pesquisa-se na relação {6, 8};<br />
pesquisa-se <strong>em</strong> {6} e conclui-se que 7 não está relação.<br />
int PesqBinaria(int *v, int t, int x)<br />
{<br />
int i, Central;<br />
i = 0;<br />
Central = t/2;<br />
while ((x != v[Central]) && (i t)<br />
return (-1);<br />
else<br />
return(Central);<br />
}<br />
A pesquisa binária também é importante no desenvolvimento da lógica de programação pelo fato de<br />
que é uma função que pode ser impl<strong>em</strong>entada recursivamente, s<strong>em</strong> que a impl<strong>em</strong>entação recursiva seja<br />
menos eficiente do que a não recursiva. Para perceber a recursividade basta ver que a mesma pesquisa se<br />
repete, sendo que, <strong>em</strong> cada repetição, o vetor pesquisado t<strong>em</strong> alterado a posição da sua última componente<br />
ou da sua primeira componente.<br />
int PesqBinRec(int *v, int i, int t, int x)<br />
{<br />
int Central;<br />
Central = (i + t)/2;<br />
if (v[Central] == x)<br />
return (Central + 1);<br />
else<br />
if (t < i)<br />
return (-1);<br />
else<br />
if (x < v[Central])<br />
PesqBinRec(v, i, Central - 1, x);<br />
else<br />
PesqBinRec(v, Central + 1, t, x);<br />
}<br />
7.4 Ordenação<br />
O SelecSort<br />
O algoritmo SelectSort consiste <strong>em</strong> se selecionar, sucessivamente, o maior el<strong>em</strong>ento, o segundo maior<br />
el<strong>em</strong>ento, o terceiro maior el<strong>em</strong>ento, etc., e, após cada seleção, armazenar o valor selecionado num vetor<br />
auxiliar na posição que mantém o tal vetor auxiliar ordenado. Por ex<strong>em</strong>plo, se se pretende a ordenação <strong>em</strong>