De las respuestas que he leído, y es mucho menor que las 79 enumeradas en el momento en que las leí, todas tenían la misma respuesta: es O (N), que significa “orden N”, en caso de que no un programador y no conoce tal nomenclatura, significa que hay una relación lineal entre N y cuánto trabajo tiene que hacer, o para ser precisos, cuánto tiene que hacer la computadora. Lo que significa en este ejemplo es que uno tiene que inspeccionar todos los valores de N. Multa. No conozco una mejor manera de hacerlo. Configura un bucle e itera a través de él. Hecho.
Asumo por la naturaleza de la pregunta que usted es nuevo en la programación de computadoras. Para agregar valor a esta discusión, podría ser útil mencionar el contexto de situaciones en las que un programador podría tener que responder a este tipo de preguntas. Dependiendo de la situación, hay diferentes formas de implementar la solución. Esto le dará una idea de lo que es escribir código para ganarse la vida.
- En el caso más simple, allí es donde no hay contexto, y el propósito del programa es no hacer nada más que identificar el valor más grande, tiene una variable que inicialmente estableció en el primer valor de la matriz. Su ciclo no hace nada más que comparar el segundo valor a través del enésimo con “mayor” y reemplazar el valor de “mayor” con el valor inspeccionado si es mayor que “mayor”. Cuando haya terminado, sabrá cuál es el valor más grande, pero no sabe qué elemento de la matriz era. No le importa porque sus órdenes de marcha fueron solo para encontrar el mayor valor. Raramente es así de simple.
- La mayoría de las veces, la tarea es encontrar el valor más grande (o más pequeño, o lo que sea) para identificar una instancia específica en una colección de artículos uniformes. En otras palabras, el valor en cuestión es parte de algo más grande. Lo que busca es el índice ordinal (valor de subíndice de una matriz), un valor clave de base de datos o un puntero de algún tipo. Cuando eso es lo que está haciendo, no solo tiene que rastrear el valor más grande en la medida en que recorre la colección, sino que también debe realizar un seguimiento del índice, clave o puntero al elemento que contiene el valor más grande.
- Si es un índice, entonces es solo el desplazamiento desde el comienzo de la matriz. El valor de comparación en sí es secundario al valor del índice. Si informa este índice, digamos, como un retorno de función, el valor máximo en sí mismo puede extraerse inspeccionando el elemento asociado con el índice de matriz.
- Si es un valor clave, indica un registro en una base de datos que se puede utilizar para recuperar ese registro completo para algún otro propósito. Por ejemplo, si estaba buscando al empleado más antiguo de una empresa, uno devolvería la clave para el registro en la base de datos de empleados de la persona con la fecha de nacimiento más temprana. Luego, también tendría acceso al nombre del empleado más antiguo, la fecha de nacimiento y cualquier otra información contenida en la base de datos. Por supuesto, si la pregunta a responder fuera solo “¿Cuántos años tiene nuestro empleado más viejo?”, Y no le importaba quién era, entonces simplemente devolvería la fecha de nacimiento más temprana encontrada o la diferencia horaria entre la hora actual sello y la fecha indicada. Sin embargo, si este valor de edad se usara en un documento destinado a persistir, se debe incorporar una expresión para calcular esta edad para volver a calcularlo cada vez que se visualiza el documento. Esto es lo que hacen en las biografías de Wikipedia. La página HTML que ve se genera cuando la ve. Enumeran la fecha de nacimiento de la persona, luego, si vive, una expresión, “currentTime – birthDate”, genera la edad actual de la persona en años enteros. (En el cumpleaños de Barack Obama el 4 de agosto de 2016, su entrada de edad pasó de “(54 años)” a “(55 años)”.)
- Si es un puntero, es la dirección de una estructura o simplemente el elemento de matriz que contiene el valor. Si no sabe cómo un puntero difiere de un índice de matriz, lea en su libro de texto.
- ¿Qué haces si la matriz es de longitud cero? Puede tenerlos en muchos idiomas. Si se crea una instancia de una dirección de matriz, pero no se asigna memoria que pueda ser señalada por esa variable de dirección, entonces obtendrá un error de memoria si intenta inspeccionar la matriz o quizás evaluar su longitud. Hay varias formas de lidiar con esto.
- Si su idioma tiene un manejo de excepciones, puede manejarlo en un controlador e indicar “indefinido” o “matriz no válida” en el retorno de la función. De lo contrario, debe verificar esta condición directamente en su código para lidiar con tal ocurrencia.
- El valor utilizado para indicar “ilegal” dependería del tipo de retorno de su función o método y el rango de valores posibles que se devolverán. Si return es el índice de la matriz basado en cero, entonces -1 podría ser una buena forma de expresar “colección no válida”. Si se trata de un puntero, entonces se usará “nada”, expresado como (void *) 0 o NULL o lo que sea estándar para expresar un puntero nulo. Si se trata de una clave de base de datos, se utilizará la notación del lenguaje de consulta de la base de datos para “NO RECORD”.
- ¿Qué trabajos puedo hacer con un título en Matemáticas e Informática?
- Matemática discreta: ¿Cuál es la diferencia entre ser un elemento de un conjunto o ser un subconjunto de un conjunto?
- ¿Hay un problema del Proyecto Euler que es un problema de NP?
- ¿Qué es la skolemización?
- Si el poder de cómputo de las computadoras está limitado por la ley de Moore, ¿cuál es la condición que limita el poder de cómputo del cerebro humano?