GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing es.javascript.info — Subarray máximo regresar a la lección Subarray máximoimportancia: 2 La entrada es un array de números, por ejemplo La tarea es encontrar, dentro de ’arr’, el subarray de elementos contiguos que tenga la suma máxima. Escribe la función Por ejemplo:
Si todos los elementos son negativos, no toma ninguno (el subarray queda vacío) y la suma es cero:
Trata de pensar en una solución rápida: O(n2), o incluso O(n) si puedes. Solución lentaPodemos calcular todas las subsumas. La forma más simple es tomar cada elemento y calcular las sumas de todos los subarrays que comienzan con él. Por ejemplo, para
El código es un bucle anidado. El bucle externo itera sobre los elementos del array, y el interno cuenta subsumas comenzando con cada uno de ellos.
La solución tiene una complejidad 2 en notación Landau O(n2) (coste respecto al tiempo). Es decir, si multiplicamos el tamaño del array por 2, el tiempo del algoritmo se multiplicará por 4. Para arrays muy grandes (1000, 10000 o más items) tales algoritmos llevarán a una severa lentitud. Solución rápidaRecorramos el array y registremos la suma parcial actual de los elementos en la variable Si la descripción te resulta demasiado vaga, por favor mira el código. Es bastante corto:
El algoritmo requiere exactamente una pasada, entonces la complejidad es O(n). Puedes encontrar información más detallada acerca del algoritmo: Subvector de suma máxima. Si aún no es obvio cómo funciona, traza el algoritmo en los ejemplos de arriba y observa cómo trabaja, es mejor que cualquier explicación. |
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |