|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: May 2003
Città: milano
Messaggi: 891
|
JAVA: algoritmo
mi servirebbe un algoritmo scritto in java o pseudocodice per trovare un numero tra una lista più vicino alla media di quest'ultimi..
esempio 9 6 3 10 2 media 6 numero più vicino alla media 6 qualche suggeritmento? grazie
__________________
CPU: Intel Core Duo E6850 3Ghz - MOTHERBOARD: XFX Nforce 650i ultra - VIDEO: XFX Geforce 8800 GTS 320mb XT Edition @ 600/1900 - RAM: 4GB DDR2 800mhz - HD: 2 x MAXTOR 250GB SATAII (RAID0) - AUDIO: Creative Sound Blaster Audigy 2 |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jul 2002
Città: Milano
Messaggi: 19148
|
mi sa che ti conviene farlo, non è difficile
tanto l'algoritmo è lineare, devi scorrere la lista due volte, prima per fare la media poi per far passare tutti gli elementi e scegliere il più vicino. anzi, la lista la scorri una volta e un tot perché quando trovi un elemento uguale alla media (se c'è) puoi anche fermarti ![]() |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: May 2003
Città: milano
Messaggi: 891
|
Quote:
il ciclo ke calcola la media è fatto.. mentre l'altro non mi funziona.. v posto il pezzo di codice magari qualcuno riesce a correggerlo.. double diff = 0; double appoggio = 0; for(i=0;i<valori.length;i++) { diff = media - (double) valori[i].getArea(); Math.abs(diff); if(diff<=appoggio) { appoggio=diff; valori[i]=proxMedia; } }
__________________
CPU: Intel Core Duo E6850 3Ghz - MOTHERBOARD: XFX Nforce 650i ultra - VIDEO: XFX Geforce 8800 GTS 320mb XT Edition @ 600/1900 - RAM: 4GB DDR2 800mhz - HD: 2 x MAXTOR 250GB SATAII (RAID0) - AUDIO: Creative Sound Blaster Audigy 2 |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
penso che questo assegnamento
valori[i]=proxMedia; sia scorretto, dovrebbe essere il contrario, ovvero ti salvi il numero che fino a quelo momento e' piu' vicino alla media. |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: May 2003
Città: milano
Messaggi: 891
|
Quote:
double[] differenze = new double[forme.length]; double minimo=Integer.MAX_VALUE; Forma proxMedia=null; for(i=0;i<forme.length;i++) { differenze[i] = Math.abs(media - (double) forme[i].getArea()); if(differenze[i]<=minimo) { minimo=differenze[i]; proxMedia=forme[i]; } }
__________________
CPU: Intel Core Duo E6850 3Ghz - MOTHERBOARD: XFX Nforce 650i ultra - VIDEO: XFX Geforce 8800 GTS 320mb XT Edition @ 600/1900 - RAM: 4GB DDR2 800mhz - HD: 2 x MAXTOR 250GB SATAII (RAID0) - AUDIO: Creative Sound Blaster Audigy 2 |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:50.