GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing it.javascript.info — Il sub-array massimo torna alle lezioni Il sub-array massimoimportanza: 2 Come input si ha un array di numeri, ad esempio Il compito è: trovate il sub-array contiguo di Scrivete la funzione Ad esempio:
Se tutti gli elementi sono negativi, non prendiamo nulla (il sotto-array è vuoto), quindi la somma è zero:
Provate a pensare ad una soluzione rapida: O(n2) o addirittura O(n) se riuscite. La soluzione più lentaPossiamo calcolare tutte le somme possibili. La via più semplice è di prendere ogni elemento e calcolare la somma di tutti i sotto-array possibili. Ad esempio, per
Il codice è un ciclo annidato: il ciclo esterno processa tutti gli elementi dell’array, quello interno esegue le somme a partire dall’elemento corrente.
La soluzione ha una complessità di O(n2). In altre parole, se l’array fosse 2 volte più grande, l’algoritmo lavorerebbe 4 volte più lentamente. Per grandi array (1000, 10000 o più elementi) questi algoritmi possono portare ad enormi attese. Soluzione performanteIniziamo ad esaminare l’array mantenendo la somma parziale degli elementi nella variabile Se la risposta vi sembra troppo vaga, date un’occhiata al codice:
L’algoritmo richiede esattamente uno solo scorrimento dell’array, quindi la complessità è O(n). Potete trovare maggiori dettagli riguardo l’algoritmo qui: Maximum subarray problem. Se ancora non vi risulta ovvio il funzionamento, esaminate più in dettaglio il codice fornito sopra. |
| You are visitor 01402520 — 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. |