Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

207
Visualizações
¿Cómo hacer que la búsqueda binaria funcione con cadenas?

Esta búsqueda binaria funciona con números, pero no funciona con picaduras.

 function binary_search(Array, key) { var middleIndex = Math.floor(Array.length / 2) var middleValue = numberArray[middleIndex] //base case key = middle element if (middleValue === key) return true else if (middleValue < key && Array.length > 1) { return binary_search(Array.splice(middleIndex, Array.length), key) } else if (middleValue > key && Array.length > 1) { return binary_search(Array.splice(0, middleIndex), key) } else return false }

Si le doy números, funciona:

 console.log(binary_search([5,7,12,16,36,39,42,56,71], 36)) output: true

Pero no con cadenas:

 console.log(binary_search(['cat', 'dog', 'bird', 'fish'], 'dog')) result : flase

Entiendo que la matriz debe estar preordenada para que esto funcione, pero ¿cómo hacer esto con cadenas?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

tal como dices

Entiendo que la matriz debe estar preordenada para que esto funcione

La matriz de cadenas que está pasando no está ordenada, por lo que la búsqueda binaria no será posible. Si lo ordenas primero

 ['bird', 'cat', 'dog', 'fish']

entonces su enfoque actual ya funcionará, principalmente , porque === compara cadenas correctamente, y < y > también compara cadenas lexiográficamente (funciona tanto para números como para cadenas), con algunas advertencias:

  • Use slice para extraer un segmento de una matriz, no splice , que eliminará elementos de la matriz (¡una mutación!) y devolverá una matriz de esos elementos devueltos (no muy intuitivo)
  • No tiene una variable numberArray en el alcance, y tampoco debe sombrear el Array global. Use un nombre de variable diferente y use el mismo nombre en todas partes en su función

 function binary_search(arr, key) { const middleIndex = Math.floor(arr.length / 2) const middleValue = arr[middleIndex] if (middleValue === key) return true if (arr.length <= 1) return false; if (middleValue < key) { return binary_search(arr.slice(middleIndex), key) } else if (middleValue > key) { return binary_search(arr.slice(0, middleIndex), key) } return false } console.log(binary_search(['bird', 'cat', 'dog', 'fish'], 'dog'));

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda