el código para una función que busca un elemento en un array de n números enteros, sin signo, ordenados, donde n es un unsigned ingresado por el usuario, mediante el algoritmo binary search. La función puede recibir, mediante puntero a función, qué tipo de orden se llevará a cabo, por ejemplo: ascendente, descendente, valor absoluto ascendente, valor absoluto descendente, etc.
C++
int binary_search(int array[], int n, int target, bool (*compare)(int, int)) { int low = 0; int high = n - 1; while (low <= high) { int mid = (low + high) / 2; if (compare(array[mid], target)) { return mid; } else if (compare(array[mid], target) == false) { low = mid + 1; } else { high = mid - 1; } } return -1; } bool compare_ascending(int a, int b) { return a < b; } bool compare_descending(int a, int b) { return a > b; } bool compare_absolute_ascending(int a, int b) { return abs(a) < abs(b); } bool compare_absolute_descending(int a, int b) { return abs(a) > abs(b); }
Use o código com cuidado. Saiba mais
content_copy
Esta función toma un array de números enteros, el número de elementos en el array, el número a buscar, y una función de comparación como parámetros. La función devuelve la posición del número en el array si se encuentra, o -1 si el número no se encuentra en el array.
La función trabaja dividiendo el array en dos mitades a la mitad cada vez, y luego comparando el número a buscar con el número en el medio. Si el número a buscar es igual al número en el medio, la función devuelve la posición del número. Si el número a buscar es menor que el número en el medio, la función busca en la mitad inferior del array. Si el número a buscar es mayor que el número en el medio, la función busca en la mitad superior del array.
La función continúa dividiendo el array en dos mitades a la mitad hasta que encuentra el número a buscar o hasta que el array esté vacío. Si el array está vacío, la función devuelve -1.
La función de comparación es una función que toma dos números enteros como parámetros y devuelve un booleano. El booleano indica si el primer número es menor, igual o mayor que el segundo número.
Para escribir su respuesta aquí, Ingresar o Crear una cuenta
Compartir