Esercizio java(Massime Occorrenze)

di il
1 risposte

Esercizio java(Massime Occorrenze)

Salve a tutti, da qualche mese sto sudiando il linguaggio java esercitandomi con qualunque tipo di esercizio riesca a trovare. Ora,mi son imbattuto in esercizio che chiede di calcolare le massimeOccorrenze di un array: esempio, se ho int[]a={1, 4, 3, -7, 4, 2, 4, 1, 5} devo scrivere un metodo richiamando contaOccorrenze(sono esercizi concatenati),che restituisce il numero massimo di ripetizioni di uno stesso valore all’interno di a. In questo caso  viene restituito 3 in quanto l’elemento più ripetuto (4) è ripetuto 3 volte.
Ora il metodo contaOccorrenza lo strutturato così:
static int contaOccorrenza(int []a,int n){
int conta=0;
for(int i=0;i<a.length;i++){
if(a==n){conta ++;

}
}return conta;
}

e va bene ora per fare quello sulle Massime ho iniziato cosi:

static int massimoOccorrenza(int []a){int conta =0;
for(int i=0;i<a.length;i++){
contaOccorrenza (a,a); (non so se sia giusto, se si poi come continuare?)

qua una volta contate quante cifre ci sono nelle varie pos dell'array come fare a dire qual'è quello piu ripetutO?

GRAZIE MILLE.

1 Risposte

  • Re: Esercizio java(Massime Occorrenze)

    Il tuo algoritmo e' DECISAMENTE INEFFICENTE.

    Non sto parlando di codice scritto male, ma di ALGORITMO CONCETTUALMENTE INEFFICENTE.

    In pratica, si dice che ha COMPLESSITA' COMPUTAZIONALE QUADRATICA:

    cioe' se RADOPPI il numero di elementi da contare, il tempo per contarli si QUADRUPLICA !!!!

    Ora con 10 elementi, non e' un problema, ma prova con 1000, o 100.000.

    Per saper risolvere questo esercizio, il problema NON E' saper programmare, ma CONOSCERE GLI ALGORITMI E LE STRUTTURE DATI.

    Ad esempio, secondo te, SE I DATI FOSSERO ORDINATI, sarebbe piu' o meno facile contare il numero di occorrenze?


    Infine, l'ULTIMA tua domanda (NON SONO CIFRE, SONO NUMERI!!!!) e' bischera!

    E' come chiedere: di che colore e' il cavallo bianco di Napoleone??

    Nero, ovviamente !!!!

    PS:

    0,1,...9 SONO LE CIFRE

    1001 e' un NUMERO formato da 4 CIFRE
    3 e' un NUMERO formato da 1 CIFRA

    Il tuo ARRAY NON CONTIENE CIFRE, MA NUMERI!!!!!

    !!!!
Devi accedere o registrarti per scrivere nel forum
1 risposte