En un algoritmo de búsqueda binaria existe la línea, si la clave == A [mid] return (mid + 1). ¿Por qué (mediados + 1)?

Por favor, consulte el algoritmo en wiki: –

Algoritmo de búsqueda binaria – Wikipedia

El algoritmo dice, regresa a la mitad .

Entonces, ¿por qué volver (mid + 1) ?

No es el algoritmo sino la diferencia en la convención que seguimos en el mundo humano versus el mundo digital.

En C, un índice de matriz comienza desde 0.

Considere seguir:

Por ejemplo: – buscar 30 en [10, 20, 30, 40, 50]

Si le preguntas a un humano, él / ella responderá – 3ra posición (como comenzamos desde la 1ra).

Si le pregunta a un programa en C, devolverá la posición 2 (ya que el índice comienza desde 0).

Depende de lo que quieras devolver: –

  1. Índice del número en la matriz -> return mid
  2. Posición del número -> return mid + 1

Gracias. A2A

Aquí mid + 1 se usa para indexación basada en 1. Supongamos que tiene una matriz como esta.

Ahora necesita encontrar un valor utilizando la búsqueda binaria de esta matriz. Pero debe responder el índice del valor de búsqueda en la indexación basada en 1. Donde toma la entrada en la indexación basada en 0 . Deje que el valor de búsqueda sea 44. Después de algunas iteraciones de búsqueda binaria cuando mid = 5, verá que Array [5] == 44. Entonces, si devuelve 5, entonces es el índice basado en 0 del valor de búsqueda. Pero necesitas el índice basado en 1 . Por esta razón, se agrega 1 a la mitad para convertirlo de índice basado en 0 a índice basado en 1.

En la mayoría de los lenguajes de computadora (con la excepción de FORTRAN, Cobol, AWK y algunos otros), el índice de la matriz comienza con 0. Esto tiene sentido porque el nombre de la matriz suele ser un puntero a la primera posición de la matriz.

Sin embargo, cuando estamos discutiendo la posición dentro de la matriz, no hay una posición 0. Por lo tanto, tiene sentido que la posición de un elemento dentro de la matriz sea igual a su índice + 1.

si se refiere a la posición, entonces mid + 1 es apto; de lo contrario, simplemente regrese mid, lo que significa el índice del elemento buscado.

More Interesting

¿Cuál es el futuro de la música generada por computadora?

¿Hay alguna manera de girar a la izquierda / derecha una matriz binaria en menos de O (n) tiempo?

¿Cómo puedo aprender las estructuras de datos en 3 meses?

¿Existe un algoritmo para encontrar un árbol con una longitud de ruta mínima ponderada para un gráfico conectado genérico?

¿Cuál es el menor número de operaciones necesarias para ordenar una matriz de n objetos arbitrarios?

¿De qué maneras se usan los algoritmos y con qué frecuencia se usan?

Informática: ¿Por qué la recursión es más elegante que la iteración?

Dada una cadena, ¿cuál es su subcadena más corta, la concatenación de una o más copias de sus resultados en la cadena original?

¿Cuáles son algunas de las cosas que los algoritmos de aprendizaje automático pueden hacer pero los algoritmos de aprendizaje profundo no pueden hacer?

¿Por qué no puedo resolver mi Cubo de Rubik de 4 x 4 x 4 como un cubo de Rubik de 3 x 3 x 3 si ya he hecho los centros y los bordes?

Dados N cajas grandes y M cajas pequeñas de diferentes tamaños, ¿cómo elegir una caja grande óptima para empacar todas las cajas más pequeñas?

¿Cuál es la diferencia entre el orden de fusión de arriba hacia abajo y el de fusión de abajo hacia arriba?

¿Cómo se explica el algoritmo de Metropolis-Hastings en términos simples?

¿Algún algoritmo de aprendizaje profundo quedará obsoleto algún día con los algoritmos tradicionales? ¿O los algoritmos de aprendizaje profundo solo son adecuados para problemas específicos?

¿Cuáles son los mejores algoritmos de Real Space Renormalization Group?