logo

Algoritmo de búsqueda binaria en C

Un método rápido para localizar un elemento particular en una matriz ordenada es una búsqueda binaria. La tarea inicial de este algoritmo es comparar el valor objetivo con el elemento medio de la matriz. La búsqueda se considera exitosa si el valor objetivo está contenido en el elemento central. El algoritmo buscará en la mitad izquierda de la matriz si el valor objetivo es menor que el elemento central. El programa escaneará la mitad derecha de la matriz si el valor objetivo es mayor que el elemento central. Este método se repite hasta que se agota el valor objetivo o el rango de búsqueda.

Uso:

Bases de datos, motores de búsqueda y procesamiento de datos son sólo algunas de las aplicaciones que utilizan la estrategia de búsqueda binaria.

Características:

  • La matriz de valores de entrada debe estar ordenada.
  • Con cada iteración, el método reduce el rango de búsqueda a la mitad, lo que lo hace particularmente eficiente para conjuntos de datos grandes.
  • El algoritmo tiene una complejidad temporal en el peor de los casos O (log n).
  • El programa encuentra el valor deseado mediante una estrategia de divide y vencerás.

A continuación se muestra un ejemplo sencillo del algoritmo de búsqueda binaria escrito en C:

descargar reproductor multimedia vlc youtube
 #include int binary_search(int arr[], int left, int right, int target) { while (left <= right) { int mid="left" + (right - left) 2; if (arr[mid]="=" target) return mid; } else < left="mid" 1; right="mid" -1; target not found main() arr[]="{1," 3, 5, 7, 9}; n="sizeof(arr)" sizeof(arr[0]); index="binary_search(arr," 0, 1, target); (index="=" -1) printf('target found
'); at %d
', index); 0; pre> <p> <strong>Output:</strong> </p> <pre> Target found at index 2 </pre> <ul> <li>The binary_search function accepts four arguments: the array to search, the left and right search range boundaries, and the target value to look for. The function returns its index if the desired value can be found; else, it returns -1.</li> <li>The main function creates an array arr and a value target. The binary_search function is then used to search the array for the desired value. The function returns the index where the target value was located if it was, the function returns the index at which it was found. Otherwise, the message &apos;Target not found&apos; is displayed.</li> <li>The binary search algorithm&apos;s implementation is basic. We begin by setting the left border to the array&apos;s initial index and the right boundary to the array&apos;s last index. Once the left boundary is less than or equal to the right border, the array is looped through one more time. We use the formula (left + right) / 2 within the loop to calculate the middle index of the search range. This formula computes the integer value of the middle index&apos;s floor.</li> <li>The centre member of the array is contrasted with the target value. We return the index of the middle element if they are equal. We change the right boundary to be one less than the middle index if the desired value is less than the middle element. If not, we adjust the left border so that it is one more than the centre index. We continue doing this until the goal value is obtained or the search space is filled.</li> <li>The temporal complexity of the binary search algorithm, where n is the array size, is O(log n). This is far more efficient than linear search, which has a temporal complexity of O(n), where n is the size of the array.</li> <li>Finally, the binary search technique offers a useful way to locate a particular member in a sorted array. It is easy to build and has an O(log n) time complexity, making it an efficient approach for large datasets.</li> </ul> <h3>Advantages:</h3> <ul> <li>For large datasets, the binary search algorithm is exceptionally efficient, and it is capable of handling a wide range of input sizes.</li> <li>The algorithm is simple to implement in almost all programming languages.</li> </ul> <h3>Disadvantages:</h3> <ul> <li>Before using the binary search technique, the input array must be sorted, which takes more time and memory.</li> <li>The algorithm cannot be applied to unsorted arrays.</li> <li>The algorithm may yield inaccurate results if the input array is not sorted.</li> <li>The binary search algorithm is not appropriate for tiny datasets since the technique&apos;s overhead may outweigh its benefits.</li> </ul> <h2>Conclusion:</h2> <p>A sorted array can be quickly searched for a specific element using the binary search technique. It employs a divide-and-conquer strategy to cut the search range in half with each iteration, allowing it to be highly efficient for large datasets. However, before using the binary search technique, the input array must be sorted, which takes extra time and memory. The binary search algorithm is a sophisticated data processing tool that is widely utilised in various sectors.</p> <hr></=>
  • La función binario_search acepta cuatro argumentos: la matriz a buscar, los límites del rango de búsqueda izquierdo y derecho y el valor objetivo a buscar. La función devuelve su índice si se puede encontrar el valor deseado; de lo contrario, devuelve -1.
  • La función principal crea una matriz arr y un valor objetivo. Luego, la función binario_search se utiliza para buscar en la matriz el valor deseado. La función devuelve el índice donde se encontraba el valor objetivo, si así fuera, la función devuelve el índice en el que se encontró. De lo contrario, se muestra el mensaje 'Destino no encontrado'.
  • La implementación del algoritmo de búsqueda binaria es básica. Comenzamos estableciendo el borde izquierdo como el índice inicial de la matriz y el límite derecho como el último índice de la matriz. Una vez que el límite izquierdo es menor o igual que el borde derecho, la matriz se repite una vez más. Usamos la fórmula (izquierda + derecha) / 2 dentro del bucle para calcular el índice medio del rango de búsqueda. Esta fórmula calcula el valor entero del piso del índice medio.
  • El miembro central de la matriz se contrasta con el valor objetivo. Devolvemos el índice del elemento del medio si son iguales. Cambiamos el límite derecho para que sea uno menos que el índice medio si el valor deseado es menor que el elemento medio. Si no, ajustamos el borde izquierdo para que sea uno más que el índice central. Seguimos haciendo esto hasta obtener el valor objetivo o llenar el espacio de búsqueda.
  • La complejidad temporal del algoritmo de búsqueda binaria, donde n es el tamaño de la matriz, es O (log n). Esto es mucho más eficiente que la búsqueda lineal, que tiene una complejidad temporal de O(n), donde n es el tamaño de la matriz.
  • Finalmente, la técnica de búsqueda binaria ofrece una forma útil de localizar un miembro particular en una matriz ordenada. Es fácil de construir y tiene una complejidad temporal O (log n), lo que lo convierte en un enfoque eficiente para grandes conjuntos de datos.

Ventajas:

  • Para conjuntos de datos grandes, el algoritmo de búsqueda binaria es excepcionalmente eficiente y es capaz de manejar una amplia gama de tamaños de entrada.
  • El algoritmo es sencillo de implementar en casi todos los lenguajes de programación.

Desventajas:

  • Antes de utilizar la técnica de búsqueda binaria, se debe ordenar la matriz de entrada, lo que requiere más tiempo y memoria.
  • El algoritmo no se puede aplicar a matrices no ordenadas.
  • El algoritmo puede producir resultados inexactos si la matriz de entrada no está ordenada.
  • El algoritmo de búsqueda binaria no es apropiado para conjuntos de datos pequeños, ya que los gastos generales de la técnica pueden superar sus beneficios.

Conclusión:

Se puede buscar rápidamente un elemento específico en una matriz ordenada utilizando la técnica de búsqueda binaria. Emplea una estrategia de divide y vencerás para reducir el rango de búsqueda a la mitad con cada iteración, lo que le permite ser muy eficiente para grandes conjuntos de datos. Sin embargo, antes de utilizar la técnica de búsqueda binaria, se debe ordenar la matriz de entrada, lo que requiere más tiempo y memoria. El algoritmo de búsqueda binaria es una sofisticada herramienta de procesamiento de datos que se utiliza ampliamente en diversos sectores.