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:
- Algoritmos: ¿Cómo encuentro un elemento en una secuencia que sea más pequeño que mi número en la secuencia, a la izquierda de mi número y a la derecha de todos esos elementos?
- Inventé un algoritmo de búsqueda de cadenas. ¿Cómo hago para asegurarme de que lleva mi nombre? ¿Es posible patentarlo / copyright o alguna otra cosa? ¿Se pueden proteger los algoritmos?
- ¿Cuáles son algunos algoritmos básicos en el aprendizaje automático para que su programa aprenda de otros datos (aprendizaje supervisado)?
- ¿Dónde puedo encontrar problemas difíciles de algoritmo / estructura de datos?
- ¿Qué es mejor para eliminar números específicos de una matriz, Java o C ++?
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.