[C++] Trovare la moda di una sequenza di n numeri
Salve a tutti, ho alcune difficoltà nel realizzare un programma in C++ che trovi la moda di una successione di n numeri (interi positivi) e mi sarebbe utile avere un algoritmo già pronto da dover solo "tradurre" in codice C++.
Sapreste dirmene uno?
Grazie.
Sapreste dirmene uno?
Grazie.
Risposte
Ciao fafnir39 
Puoi sfruttare il già esistente algoritmo di ordinamento counting sort (il cui codice lo trovi tranquillamente in rete) in cui basta che ometti la parte in cui viene eseguito l'ordinamento. Una volta determinato il vettore delle occorrenze è sufficiente infatti determinare l'elemento più frequente con una semplice scansione lineare dello stesso e stop...

Puoi sfruttare il già esistente algoritmo di ordinamento counting sort (il cui codice lo trovi tranquillamente in rete) in cui basta che ometti la parte in cui viene eseguito l'ordinamento. Una volta determinato il vettore delle occorrenze è sufficiente infatti determinare l'elemento più frequente con una semplice scansione lineare dello stesso e stop...
Come lo calcoleresti se dovessi trovarla a mano?
Comunque a rigore la moda non è necessariamente unica.
Comunque a rigore la moda non è necessariamente unica.
Io a mano faccio la tabella. Volendo potresti usare anche una double linked list per la tabella (ordinandola mentre inserisci i valori). Non so quale sia la migliore scelta in termini di performance e memoria (immagino dipenda dai dati). Comunque rimane la questione legata al fatto che più elementi potrebbero avere la stessa frequenza.