<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: cin</title>
    <description>The latest articles on DEV Community by cin (@cincin).</description>
    <link>https://dev.to/cincin</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1176217%2Fa15f5a4b-8bf5-4908-b0e7-719ed68770ec.jpeg</url>
      <title>DEV Community: cin</title>
      <link>https://dev.to/cincin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cincin"/>
    <language>en</language>
    <item>
      <title>Algoritmos: Busca Linear e Busca Binária</title>
      <dc:creator>cin</dc:creator>
      <pubDate>Thu, 05 Dec 2024 13:56:24 +0000</pubDate>
      <link>https://dev.to/cincin/algoritmos-busca-linear-e-busca-binaria-496j</link>
      <guid>https://dev.to/cincin/algoritmos-busca-linear-e-busca-binaria-496j</guid>
      <description>&lt;p&gt;Há alguns algoritmos simples que introduzem conceitos básicos de lógica e estrutura de dados, enquanto outros visam maior complexidade. &lt;/p&gt;

&lt;p&gt;Algoritmos de busca são úteis para localizar informações em volumes de dados, como encontrar um contato em uma lista telefônica ou um arquivo em um computador.&lt;/p&gt;

&lt;p&gt;Nesse sentido, o presente artigo visa apresentar uma introdução aos conceitos que envolvem algoritmos de Busca Linear e Busca Binária.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Linear Search&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Percorre uma lista sequencialmente para encontrar um elemento&lt;/li&gt;
&lt;li&gt;Como exemplar seria buscar um número específico em um array&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O &lt;strong&gt;Algoritmo de Linear Search&lt;/strong&gt;, em declaração narrativa, significa ter um array de números inteiros e um valor que será a referência para a busca, denominado de target, os quais serão os parâmetros de entrada. Nesse sentido, tem-se uma função que recebe esses valores, e com isso, primeiro percorre-se cada posição desse array até o tamanho máximo de posições existentes, utilizando primariamente um &lt;code&gt;for&lt;/code&gt; para isso, e então, com um &lt;code&gt;if&lt;/code&gt;, condiciona-se a verificação para: se cada posição possui o valor igual ao target. Caso o valor seja encontrado, a função retorna o índice dessa posição, ou retorna o -1, representando os casos não encontrados. &lt;/p&gt;

&lt;p&gt;Um exemplo utilizando o JavaScript, seria:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function linearSearch(array, target) {
  for (let i = 0; i &amp;lt; array.length; i++) {
    if (array[i] === target) {
      return i; 
    }
  }
  return -1; 
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Portanto, esse algoritmo visa retornar a posição, ou índice, onde o elemento se encontra, ou ainda, ele simplesmente localiza o primeiro elemento correspondente, sem necessidade de continuar após encontrá-lo. Esse comportamento ocorre devido às instruções do algoritmo, o qual, ao possuir sua condição satisfeita, executa o &lt;code&gt;return&lt;/code&gt; com o índice do elemento, e após isso sai do loop, finalizando a função.&lt;/p&gt;

&lt;p&gt;Este algoritmo pode ser útil em cenários onde há pequenas listas ou não ordenadas. Cada elemento pode precisar ser percorrido, e não há o uso de memória extra.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Binary Search&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Percorre uma lista ordenada para encontrar um elemento&lt;/li&gt;
&lt;li&gt;Como exemplo seria buscar um número específico em um array&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O &lt;strong&gt;Algoritmo de Binary Search&lt;/strong&gt; é uma forma mais eficiente de algoritmo para encontrar um valor determinado em um array ordenado. Este funciona dividindo repetidamente o range de busca na metade, o que faz com que ele seja significantemente mais rápido do que a busca linear para grandes &lt;em&gt;datasets&lt;/em&gt;. A busca binária tem complexidade O(log n), enquanto a busca linear é O(n).&lt;/p&gt;

&lt;p&gt;Como exemplo em JavaScript, tem-se:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function binarySearch(array, target) {
  let low = 0;
  let high = array.length - 1;

  while (low &amp;lt;= high) {
    const middle = Math.floor((low + high) / 2);

    if (array[middle] &amp;lt; target) {
      low = middle + 1;
    } else if (array[middle] &amp;gt; target) {
      high = middle - 1;
    } else {
      return middle;
    }
  }
  return -1;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A lógica consiste em iniciar com dois ponteiros, um no início (low) e outro no final (high) do array. Assim, calcula-se o index do meio &lt;code&gt;const middle = Math.floor((low + high) / 2)&lt;/code&gt;. Com isso, compara-se o elemento do meio com o target em cada etapa: se o elemento do meio igualar ao target, retorna-se o index. Porém se o elemento do meio for menor do que o target, ou &lt;code&gt;middle &amp;lt; target&lt;/code&gt;, implica em descartar os menores números, colocando o início como &lt;code&gt;low = middle + 1&lt;/code&gt;. Se o elemento do meio, por sua vez, for maior que o target &lt;code&gt;middle &amp;gt; target&lt;/code&gt;, descarta-se os números maiores que o target, ajustando o índice final para &lt;code&gt;high = middle - 1&lt;/code&gt;. Esse processo se repete até que o target seja encontrado ou quando o range se tornar inválido, no caso &lt;code&gt;low &amp;gt; high&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;A busca binária pode ser eficiente ao encontrar dados ordenados, como em um dicionário alfabético ou em um conjunto de datas ordenadas. Tendem a ser mais rápidos e eficientes, pois pode-se dividir o problema em subproblemas menores em cada iteração.&lt;/p&gt;

&lt;p&gt;Portanto, entende-se, assim, que a busca linear é simples e funciona em pequenas listas. Já a busca binária é muito mais eficiente, mas exige dados ordenados. &lt;/p&gt;

&lt;p&gt;Entender como diferentes algoritmos funcionam e seus contextos de uso é um passo importante para a construção de soluções computacionais eficientes. Experimente implementar e analisar esses métodos, e descubra como essas estratégias podem ser adaptadas para resolver desafios do mundo real. =)&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
      <category>learning</category>
    </item>
  </channel>
</rss>
