Búsqueda binaria C ++

Búsqueda binaria C ++
C ++ presenta muchos métodos de búsqueda para buscar una variable particular desde la matriz o alguna otra estructura de datos. Entre todos ellos, la búsqueda binaria es bastante conocida por su rápida respuesta. Una matriz se convertirá a la mitad dentro de la búsqueda binaria mientras ya está ordenada. La comparación sería realizada por un punto medio de una matriz. Este valor de punto medio nos diría que busquemos el valor requerido en la mitad izquierda de una matriz o la mitad derecha. La mitad del tiempo para la búsqueda se guardará cuando se trabaje con el método de búsqueda binaria en comparación con otros métodos de búsqueda. Por lo tanto, dentro de este artículo fácil, discutiremos algunos ejemplos para ilustrar el funcionamiento de la búsqueda binaria utilizando métodos de búsqueda iterativos y recursivos.

Después de abrir el shell terminal rápidamente, debe necesitar un archivo C ++ para crear su código de búsqueda binario en él. Por lo tanto, un simple comando de palabra clave de una palabra, yo.mi., "Touch", se utilizará por este motivo. Entonces, lo hemos estado usando para crear un archivo C ++ llamado "Binario.CC ”y abrirlo a través del editor GNU Nano incorporado que se le ocurre la configuración del Ubuntu 20.04 sistema. Ambos comandos ya se han demostrado con la ayuda de la imagen a continuación.

Ejemplo 01: método iterativo

El primer método que hemos estado utilizando aquí es el método iterativo de búsqueda binaria. Sería bastante simple de hacer. Después de que el archivo se haya abierto en el editor NANO, hemos agregado los archivos de encabezado necesarios para que el código se ejecute. El espacio de nombres que debe ser estándar es necesario para el código C ++ aquí. Se ha creado una función definida por el usuario llamada "búsqueda" para realizar una búsqueda binaria. Esta función definida por el usuario toma 4 argumentos en sus parámetros, yo.mi., "A []" para la matriz, a la izquierda para matrices a la izquierda más valor, a la derecha para las matrices a la derecha, el mayor valor, y v para que se busque el valor en la matriz "A".

Al comienzo de esta función, hemos utilizado un bucle simple "while" para verificar si el valor más a la izquierda o el primer valor de la matriz es menor o igual al valor más derecho (ingresado por fin) de la matriz o no. Si el valor es menor o igual al valor más correcto, creará un nuevo punto en la matriz, i.mi., medio. Este punto medio se ha calculado utilizando tanto a la izquierda como a la derecha. Una vez encontrado el punto medio, estamos utilizando la instrucción "IF" para verificar si el valor en el índice medio de una matriz "A" es el mismo que el valor solicitado, yo.mi., "V". Si la condición se volvió eficaz y el valor "V" coincide con el valor del índice medio, devolverá el índice medio de una matriz. Al principio, nuestra matriz tiene dos mitades, izquierda y derecha. El izquierdo contiene valores más pequeños, mientras que el derecho contiene los valores más grandes en comparación con el valor de índice medio. Cuando el valor en un punto medio es menor que el valor a buscar, no necesitamos considerar la mitad izquierda de una matriz porque contendrá valores más pequeños.

Entonces, actualizaremos nuestra variable izquierda con el índice de "Mid+1". Por otro lado, si el valor medio es mayor que el valor solicitado para ser verificado, entonces necesitamos ignorar la mitad (valores más grandes) de una matriz. Entonces, la variable correcta se actualizará por un nuevo valor, yo.mi., "Mid-1". Este proceso continuará haciendo hasta que la izquierda de una matriz sea igual o menos que el punto derecho de una matriz. Si no se satisfacen las condiciones, no hemos encontrado el valor en la matriz y devolviendo -1 como un índice del método principal.

Ahora, llegó a la implementación de la función principal (). Dentro de esta función, hemos declarado una matriz llamada "A" con algunos valores enteros en ella. La matriz ya está ordenada en orden ascendente. Entonces se ha inicializado una variable "V" en la que se guardará un valor ingresado por un usuario. La instrucción Cout le dice a un usuario que ingrese algún número mientras la instrucción CIN se usa para recopilar la entrada del usuario y guardarla en la variable "V".

Otra variable, "n" se ha definido para obtener el tamaño total de una matriz con el uso de la función sizeOf () en la matriz "a". Otra variable, "Val" se ha utilizado para obtener el índice del método de búsqueda como un valor de retorno llamándolo. La llamada de función pasa la matriz A, punto izquierdo como 0, punto derecho como entero "N-1", y el valor "V" a buscar. Si el método de búsqueda devuelve "-1" a la variable "val", se ejecutará la primera declaración CoUT; de lo contrario, el segundo se ejecutará y mostrará el índice de un valor coincidente.

Por lo tanto, el código requiere la compilación primero. Después de la primera y segunda ejecución, el usuario ingresó 14 y 19, y se combinó con el índice 3 y 8, respectivamente, como se muestra. En la tercera ejecución, no funcionó como se muestra. Entonces, el compilador G ++ está aquí para su ayuda.

Ejemplo 02: método recursivo

Esto se trataba del método iterativo de búsqueda binaria en c++. Tengamos un segundo método para hacer una búsqueda binaria en C ++, un método conocido y recursivo. El método recursivo sería el mismo que el método iterativo, pero llame recursivamente su método de búsqueda binaria. Lo explicaremos con el código. Entonces, abra el mismo archivo y actualice el método de búsqueda. Hemos usado lo mismo mientras el bucle dentro del método de búsqueda con las mismas condiciones, yo.mi., declaraciones if-else, instrucción if y cálculo de punto medio.

El único cambio se ha realizado en la declaración if-else de la función de búsqueda. Cuando el valor del punto medio es mayor que el valor a buscar en el método de búsqueda, y la condición se cumple, llamará al mismo método de búsqueda con pocos cambios en sus parámetros. Todos los parámetros serán los mismos, excepto el valor de punto "derecho", que ahora es el índice "Mid-1". Por otro lado, cuando un valor de punto medio es menor que el valor a buscar, yo.mi., "V" y la condición no está satisfecha, llamará a la misma función con un pequeño cambio en su argumento de parámetros "izquierda". El punto izquierdo se actualizará con el índice de "Mid+1" ahora.

Puede ver que la función Main () es 100% igual que el ejemplo iterativo anterior, y no tiene un solo cambio de carácter en ella.

Primero, compile este código recursivo actualizado con G ++ y luego ejecútelo. Después de la primera ejecución, devuelve 3 como resultado al valor 14, mientras que no se ha encontrado ningún índice hasta ahora para el valor 24 después de la segunda ejecución.

Conclusión:

El artículo completo anterior se trata de la búsqueda binaria en C++. La búsqueda binaria ha sido descubierta y explicada bien con dos métodos diferentes, yo.mi., iterativo y recursivo. Todos los ejemplos implementados y demostrados son bastante simples de hacer y fáciles de entender, ya que cada paso se ha explicado bastante brevemente. Por lo tanto, estamos teniendo grandes esperanzas de que este artículo sea igualmente beneficioso para un usuario ingenuo, nuevo y experto.