¿Es este código de búsqueda binario válido? Si es así, ¿entonces cómo?

Cuando busca de forma recursiva hacia la izquierda o hacia la derecha, no necesita incluir el elemento del medio nuevamente.

Por ejemplo,

arr = [1,4,5,6,9,15] y queremos buscar 15 .

low = 0
high = 5

mid = (0+5)/2 = 2

Ahora, según el algoritmo, verifica si arr[mid] == key o es 5 == 15 .

No lo es, así que ahora realizamos recursivamente el mismo algoritmo en todos los elementos después de 5, ya que la key > arr[mid] . No necesitamos verificar 5 nuevamente.

Entonces hacemos binsearch(a,key,mid+1,high) y no binsearch(a,key,mid,high) . Es una ligera optimización, pero su código no funcionaría en este caso porque seguiría buscando desde el mid (4) hasta el high (5) .

Además de esto, también debe tener en cuenta el hecho cuando la clave no está presente en la matriz. Piense en lo que sucede con los valores low y high cuando la clave no está presente. Introduce ese paso en tu algoritmo.

More Interesting

¿Los robots alguna vez aprenderán a hacer trabajos de ventas?

Cómo resolver este problema SPOJ

¿Cuánto conocimiento de implementación de algoritmos usan realmente los programadores experimentados?

¿Cómo podemos generar k enteros aleatorios únicos en el rango [1 ... n] con igual probabilidad?

¿Qué es mejor si necesito elegir un camino para mi carrera, algoritmos y estructuras de datos, o tecnologías de big data, en las que estoy trabajando actualmente?

¿Cuál es la forma más rápida (estructura de datos) para buscar la matriz multidimensional?

Dos conjuntos finitos tienen elementos myn cada uno. El número total de subconjuntos del primer conjunto es 56 más que el número total de subconjuntos del segundo conjunto. ¿Cuáles son los valores de myn?

¿Cuáles son los ejemplos prácticos de algoritmos de clasificación? He oído hablar de la clasificación de burbujas, la clasificación rápida y la clasificación por inserción. ¿Cuáles son los ejemplos prácticos de estos algoritmos? ¿Para qué se usan y dónde son necesarios en los sistemas de software?

¿Cuáles son algunos algoritmos de Photoshop?

¿Cuál es el significado del peor tiempo de ejecución de un algoritmo?

¿Cómo se utilizan las estructuras de datos en las industrias?

Si podemos ordenar datos usando SQL, ¿por qué necesitamos estudiar diferentes algoritmos de ordenación?

¿Cómo puede el paralelismo mejorar el algoritmo de fuerza bruta?

¿Existe algún vínculo en los algoritmos o técnicas de estructura de datos más utilizados en la programación competitiva?

¿Memcpy es más eficiente que copiar elemento por elemento en bucle iterativo?