¿Qué calcula este algoritmo? ¿Cuál es su funcionamiento básico? ¿Cuántas veces se ejecuta la operación básica? ¿Cuál es la clase de eficiencia de este algoritmo?

Gracias por el A2A.

No puedo decir. para i <- 1 a n -1 do? No tenemos idea de en qué valor empiezo. Sin embargo, me acerco a n-1 en cada iteración, por lo que el tiempo de ejecución debe ser | i valor inicial | + n – 1. Si i comienza en un valor constante, el tiempo de ejecución es n. La operación básica es minval / maxval y se llaman | i valor inicial | + n – 1 veces o aproximadamente n veces cada una.

No estoy muy claro en su pseudocódigo, pero parece que el algoritmo calcula la diferencia entre los valores máximo y mínimo en la matriz. Suponiendo que se suponía que su algoritmo era:

para i = 0 a n-1

Entonces, el tiempo de ejecución es O (n), que es tan eficiente como realmente se puede obtener. Básicamente, debe verificar todos los n elementos para determinar el mínimo y el máximo Puede marcar más de 1 elemento a la vez para reducir el tiempo. Digamos que verificamos 2 elementos en cada iteración, luego usaremos n / 2 iteraciones pero n / 2 es aproximadamente igual a n ya que n tiende al infinito. En cualquier caso, la operación básica se seguirá llamando n veces.

Encuentra el valor máximo y mínimo en la matriz y devuelve la diferencia entre dos.

La complejidad del tiempo es O (n) que no se puede reducir aún más, pero la versión mejorada es

ALGORITMO Secreto (A [0 .. n-1])
// Entrada: una matriz A [0 .. n-1] de n números reales
minval = A [0];
maxval = A [0];

para i = 1 a n-1 do
si A [i] minval = A [i]
más si A [i]> maxval
maxval = A [i]

return maxval – minval

Estoy de acuerdo con la evaluación de Sudesh, excepto que convertiría los 2 ifs en un if y else if. Si se determina que un número es más pequeño que el más pequeño hasta ahora, no puede ser más grande que el más grande, ahorrando algunas comparaciones para encontrar el máximo. Seguiría siendo O (n), pero si una lista tiene elementos en orden descendente, realiza comparaciones menos innecesarias para encontrar su máximo, lo que le proporciona un límite inferior ligeramente mejor para la eficiencia.

Ahora, preludiré esto diciendo que para las preguntas de tarea, al menos debe mostrar parte del trabajo que ha realizado y señalar lo que no comprende.

De todos modos, este es el clásico O (n), ya que la mayor parte de las operaciones se realizan al atravesar la matriz. Técnicamente es O (n-1), pero ese único elemento menos se vuelve trivial a medida que n crece. La operación básica es lo que se hace dentro de dicho bucle.

Según la parte B de la pregunta, la respuesta es que esta es la mejor opción posible. Intentar ordenar la matriz sería O (n * log (n)), que es peor que el O (n) que ya tiene.

Este algoritmo calcula los valores mínimos y máximos en una matriz. El algoritmo es eficiente tanto en tiempo como en espacio. Puede reducir el número de comparaciones haciendo que la segunda comparación sea opcional. Si un número es menor que un valor, puede evitar verificar si es mayor. Sin embargo, la complejidad sigue siendo O (n) si la matriz es grande.

Básicamente, está tratando de encontrar el rango de la matriz
Y creo que la complejidad es mejor o (n),

Lo único que podría hacer es disminuir las comparaciones internas de loop By
reescribiendo el segundo si como si fuera así, habrá un máximo de n comparaciones
en lugar de 2 * n comarisons, lo que puede ahorrarte un poco de tiempo.

para i = 1 a n-1 do
si A [i] minval = A [i]
más si A [i]> maxval
maxval = A [i]

Pero esto se vuelve más complicado, si tiene una aplicación que sigue consultando el valor mínimo dentro de cierto rango … como:

a [0-5] a [3-7] .. etc.

En este caso, puede mejorar el algoritmo implementando el árbol de segmentos,
lo único que necesita espacio extra de o (n), pero su consulta de rango funcionará en o (logn).

ESTE ALGO COMPUTA LA GAMA DE LAS ENTRADAS PROPORCIONADAS
UTILIZANDO EL VALOR MÍNIMO Y MÁXIMO, DEPENDE DE LA “n” EN EL LAZO QUE CUÁNTAS VECES EJECUTA EJECUTA “N-1” VECES

Calcula el rango de los valores contenidos en la matriz.

Repite todos los elementos de la lista para ejecutar 2 comparaciones para cada valor en la matriz (n veces).

La complejidad del tiempo es O (n).

Como otros han señalado, O (n) es la mejor complejidad que puede lograr.

Si está haciendo muchas llamadas a la función Secreta, debe ir a la estructura de datos del Árbol de segmentos o usar una Tabla dispersa.

Estos videos te guiarán

Consulta mínima de rango

Este algoritmo le dirá la diferencia entre el valor máximo y el valor mínimo en una matriz dada. El tiempo de este algoritmo es O (n) donde n es el límite de los elementos de la matriz.