{"id":2163,"date":"2025-09-03T10:30:00","date_gmt":"2025-09-03T10:30:00","guid":{"rendered":"https:\/\/mugnos-it.com\/?p=2163"},"modified":"2025-08-05T11:54:33","modified_gmt":"2025-08-05T11:54:33","slug":"busca-binaria","status":"publish","type":"post","link":"https:\/\/mugnos-it.com\/pt\/busca-binaria\/","title":{"rendered":"Busca Bin\u00e1ria"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"2163\" class=\"elementor elementor-2163\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-14564391 e-flex e-con-boxed e-con e-parent\" data-id=\"14564391\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-480e1b5 elementor-widget elementor-widget-text-editor\" data-id=\"480e1b5\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\n<h1 class=\"wp-block-heading\"> O Algoritmo Queridinho das Entrevistas<\/h1>\n\n\n\n<p>Fala, galera! Beleza?<\/p>\n\n\n\n<p>Busca bin\u00e1ria. Esse algoritmo vive aparecendo em entrevistas t\u00e9cnicas e, \u00e0 primeira vista, pode parecer s\u00f3 mais uma pergunta pra testar sua habilidade de codar r\u00e1pido. Afinal, o c\u00f3digo \u00e9 simples mesmo \u2014 um <code>while<\/code>, alguns <code>ifs<\/code> e pronto. Mas o motivo dela estar sempre na mesa vai al\u00e9m da sintaxe. O que o entrevistador realmente quer saber \u00e9 se voc\u00ea entende a l\u00f3gica por tr\u00e1s. E, principalmente, se voc\u00ea consegue explicar por que est\u00e1 tomando cada decis\u00e3o ao longo da resolu\u00e7\u00e3o.<\/p>\n\n\n\n<p>Quando algu\u00e9m te pergunta sobre busca bin\u00e1ria, n\u00e3o est\u00e1 apenas testando sua mem\u00f3ria ou sua pr\u00e1tica de LeetCode. A quest\u00e3o real \u00e9: voc\u00ea entende o impacto daquele algoritmo? Voc\u00ea sabe a diferen\u00e7a entre percorrer uma lista de mil elementos com um <code>for<\/code>, ou encontrar a mesma resposta com no m\u00e1ximo dez passos, usando uma estrutura logar\u00edtmica? \u00c9 nesse ponto que o assunto deixa de ser s\u00f3 c\u00f3digo e entra em um terreno que muita gente foge: a complexidade dos algoritmos \u2014 ou, como muitos conhecem, a tal da nota\u00e7\u00e3o Big-O.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-dots\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2192 Busca bin\u00e1ria \u00e9 simples no c\u00f3digo, mas poderosa na teoria<\/h2>\n\n\n\n<p>Quando a gente fala de busca bin\u00e1ria, estamos lidando com uma <strong>complexidade logar\u00edtmica<\/strong>, ou seja, <strong>O(log n)<\/strong>.<\/p>\n\n\n\n<p>Pra comparar, imagina um gr\u00e1fico:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Uma busca linear (tipo <code>for<\/code>) vai crescendo direto, como uma escada (O(n), O(n\u00b2), O(n\u00b3)&#8230;).<\/li>\n\n\n\n<li>A busca bin\u00e1ria \u00e9 o contr\u00e1rio: ela reduz o esfor\u00e7o de forma dr\u00e1stica a cada itera\u00e7\u00e3o.<\/li>\n<\/ul>\n\n\n\n<p>Por exemplo, se voc\u00ea tem 16 elementos, com busca bin\u00e1ria voc\u00ea encontra o item certo em no m\u00e1ximo 4 passos. Se fossem 1.000 elementos, seriam cerca de 10 passos. Isso \u00e9 muito melhor do que percorrer tudo.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-dots\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2192 Entendendo o funcionamento na pr\u00e1tica<\/h2>\n\n\n\n<p>Vamos imaginar um array <strong>ordenado<\/strong> com os n\u00fameros de 0 a 9: <code>[3, 5, 7, 12, 18, 21, 25, 28, 30, 32]<\/code><\/p>\n\n\n\n<p>Nosso objetivo: <strong>encontrar o n\u00famero 18<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Etapa 1: Definindo os extremos<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>low = 0<\/code> (primeira posi\u00e7\u00e3o)<\/li>\n\n\n\n<li><code>high = 9<\/code> (\u00faltima posi\u00e7\u00e3o)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Etapa 2: Calculando o meio<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>mid = (low + high) \/ 2\nmid = (0 + 9) \/ 2 = 4\n<\/code><\/pre>\n\n\n\n<p>O valor da posi\u00e7\u00e3o 4 \u00e9 <strong>18<\/strong>. Achamos de primeira! \ud83c\udfaf<\/p>\n\n\n\n<p>Mas nem sempre \u00e9 assim. Vamos simular o caso em que o target \u00e9 outro n\u00famero, tipo o <strong>12<\/strong>. A\u00ed o fluxo seria:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>mid = 4 \u2192 valor = 18 \u2192 maior que 12 \u2192 ajusta <code>high = mid - 1<\/code> \u2192 high vira 3<\/li>\n\n\n\n<li>novo mid = (0+3)\/2 = 1 \u2192 valor = 5 \u2192 menor que 12 \u2192 ajusta <code>low = mid + 1<\/code> \u2192 low vira 2<\/li>\n\n\n\n<li>novo mid = (2+3)\/2 = 2 \u2192 valor = 7 \u2192 ainda menor \u2192 <code>low = 3<\/code><\/li>\n\n\n\n<li>mid = (3+3)\/2 = 3 \u2192 valor = <strong>12<\/strong> \u2192 encontrado!<\/li>\n<\/ol>\n\n\n\n<p>Foram apenas 4 passos para encontrar o n\u00famero, num array com 10 elementos. Em arrays maiores, o ganho \u00e9 ainda mais vis\u00edvel.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>IMPORTANTE:<\/strong><\/p>\n\n\n\n<p>\u00c0s vezes \u00e9 dif\u00edcil visualizar sem ver imagens, n\u00e9? Se esse for o caso, d\u00e1 uma olhada nesse v\u00eddeo onde eu explico isso de forma ilustrativa: \ud83c\udfa5https:\/\/www.youtube.com\/watch?v=pU6OLflUGIA<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-dots\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Dividir para conquistar<\/h2>\n\n\n\n<p>A grande sacada da busca bin\u00e1ria \u00e9 que voc\u00ea elimina metade dos elementos a cada passo. Isso \u00e9 muito mais eficiente que ir item por item.<\/p>\n\n\n\n<p>E essa \u00e9 a sacada que os entrevistadores querem ver: voc\u00ea n\u00e3o precisa decorar c\u00f3digo, mas sim entender por que ele \u00e9 melhor que outras abordagens.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-dots\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Nunca foi sobre o c\u00f3digo<\/h2>\n\n\n\n<p>A busca bin\u00e1ria \u00e9 sobre reduzir o esfor\u00e7o a cada passo, o famoso <em>\u201cdividir para conquistar\u201d<\/em>.<\/p>\n\n\n\n<p>Ela tem uma complexidade de O(log n) \u2014 ou seja, a cada nova itera\u00e7\u00e3o, voc\u00ea elimina metade da busca.<\/p>\n\n\n\n<p>Num array com:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>1.000 elementos \u2192 m\u00e1ximo de 10 passos<\/li>\n\n\n\n<li>1.000.000 elementos \u2192 m\u00e1ximo de 20 passos<\/li>\n<\/ul>\n\n\n\n<p>E esse \u00e9 o tipo de coisa que voc\u00ea precisa saber argumentar numa entrevista.<\/p>\n\n\n\n<p>N\u00e3o basta s\u00f3 saber fazer \u2014 tem que saber justificar o porqu\u00ea.<\/p>\n\n\n\n<p>E olha\u2026 \u00e0s vezes nem o pr\u00f3prio entrevistador tem total clareza do que espera como solu\u00e7\u00e3o durante um exerc\u00edcio que envolve \u00e1rvore bin\u00e1ria. Nessas horas, o que mais conta n\u00e3o \u00e9 acertar o c\u00f3digo de primeira \u2014 mas sim mostrar seu racioc\u00ednio. Por isso, mesmo que voc\u00ea n\u00e3o tenha certeza absoluta, explique o que est\u00e1 pensando. Fale em voz alta. Justifique por que precisa dividir determinada parte, por que escolheu aquele caminho, qual seria o pr\u00f3ximo passo.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-dots\"\/>\n\n\n\n<p>Se voc\u00ea simplesmente escreve o c\u00f3digo direto, como se fosse uma LLM gerando a resposta em segundos, pode at\u00e9 parecer impressionante \u2014 mas perde valor. Em contrapartida, algu\u00e9m que leva o dobro do tempo, mas explica cada escolha, mostra entendimento te\u00f3rico, mesmo sem concluir 100% do c\u00f3digo, acaba passando muito mais seguran\u00e7a. A entrevista \u00e9 menos sobre entregar uma solu\u00e7\u00e3o pronta e mais sobre mostrar como voc\u00ea pensa diante de um problema t\u00e9cnico.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-dots\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Conclus\u00e3o<\/h2>\n\n\n\n<p>A busca bin\u00e1ria n\u00e3o aparece em entrevistas s\u00f3 porque \u00e9 \u201cmodinha\u201d. Ela \u00e9 <strong>um \u00f3timo term\u00f4metro<\/strong> pra avaliar se voc\u00ea entende de fato:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Complexidade de algoritmos<\/li>\n\n\n\n<li>Estruturas de dados<\/li>\n\n\n\n<li>Performance na pr\u00e1tica<\/li>\n<\/ul>\n\n\n\n<p>Mais do que acertar o c\u00f3digo, o que conta mesmo \u00e9 mostrar clareza nas escolhas. Saber o que est\u00e1 fazendo e, principalmente, por que est\u00e1 fazendo.<\/p>\n\n\n\n<p>Se voc\u00ea curtiu esse conte\u00fado e quer se aprofundar ainda mais em arquitetura de software, l\u00f3gica, padr\u00f5es e boas pr\u00e1ticas modernas, vem com a gente na Comunidade de Arquitetura Descomplicada (CaD). L\u00e1 a gente descomplica o que muita gente complica \u2014 sempre com conte\u00fado direto ao ponto, com o que realmente importa pra evoluir tecnicamente e se destacar no mercado.<\/p>\n\n\n\n<p>Abra\u00e7os!<\/p>\n\n\n\n<p>Douglas Mugnos<\/p>\n\n\n\n<p><\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2b607e2 e-flex e-con-boxed e-con e-parent\" data-id=\"2b607e2\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>O Algoritmo Queridinho das Entrevistas Fala, galera! Beleza? Busca bin\u00e1ria. Esse algoritmo vive aparecendo em entrevistas t\u00e9cnicas e, \u00e0 primeira vista, pode parecer s\u00f3 mais uma pergunta pra testar sua habilidade de codar r\u00e1pido. Afinal, o c\u00f3digo \u00e9 simples mesmo \u2014 um while, alguns ifs e pronto. Mas o motivo dela estar sempre na mesa [&hellip;]<\/p>","protected":false},"author":3,"featured_media":2164,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2163","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/mugnos-it.com\/wp-content\/uploads\/2025\/08\/image-28.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/posts\/2163","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/comments?post=2163"}],"version-history":[{"count":4,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/posts\/2163\/revisions"}],"predecessor-version":[{"id":2168,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/posts\/2163\/revisions\/2168"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/media\/2164"}],"wp:attachment":[{"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/media?parent=2163"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/categories?post=2163"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/tags?post=2163"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}