Logo Studenta

Ejercicio 1: c) Dotar a la función del apartado a) con la siguiente característica: “La función podrá recibir, mediante puntero a función, qué tipo...

Ejercicio 1: c) Dotar a la función del apartado a) con la siguiente característica: “La función podrá 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.


Esta pregunta también está en el material:

Practica1-2014
3 pag.

Sistemas de Informação Universidad Nacional de CórdobaUniversidad Nacional de Córdoba

💡 1 Respuesta

User badge image

Ed IA de Studenta Verified user icon


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.

0
Dislike0

✏️ Responder

FlechasNegritoItálicoSubrayadaTachadoCitaCódigoLista numeradaLista con viñetasSuscritoSobreDisminuir la sangríaAumentar la sangríaColor de fuenteColor de fondoAlineaciónLimpiarInsertar el linkImagenFórmula

Para escribir su respuesta aquí, Ingresar o Crear una cuenta

User badge image

Otros materiales