idee per velocizzare ricerca dati in array?


salve ragazzi, mi chiedevo se esiste un metodo più veloce per la ricerca di un dato all'interno di un'array, io sto usando cicli ed if per cercare all'interno dell'array se un valore vi è contenuto tra due dati contigui, esempio:  

code: [select]

myarray[10]={5,10,20,30,40,50,60,70,80,90};

for (i==0; i<10; i++)
{
if (valore_ricercato > myarray[ ]  &&  valore_ricercato < myarray[ + 1 ] )

val_ricercato_inf = myarray[ ];
val_ricercato_sup = myarray[ + 1 ];

}
}


questo metodo mi funziona bene, ma vedo che risulta alquanto lento (relativamente) specie se il dato si trova in fondo, con 16 dati (dichiarati byte), ottengo un tempo di esecuzione da circa 30 80 in base alla posizione dove il dato si trova, sono curioso di vedere se esiste un metodo più efficace per ottenere le info spendendo il minor tempo possibile.

ringrazio in anticipo tutti coloro che interverranno con suggerimenti !

grazie

dipende da come sono ordinati dati nell'array. se sono disordinati non credo puoi fare altro che cercare in ogni elemento.
l'array che tu metti nel tuo esempio è già ordinato. in quel caso si procede con ricerca dicotomica, ovvero parti da metà dell'array.

se l'array è disordinato, nel tuo caso che vuoi fare una ricerca entro intervallo potresti spezzare l'if in due, solo se il valore è nel range per uno dei confronti allora verifichi anche l'altro estremo.
sempre che il compilatore non abbia già ottimizzato quel if unico.
code: [select]
for (i=0; i<10; i++)
{ if (valore_ricercato > myarray[ ])
    if( valore_ricercato < myarray[ + 1 ] )
    {  val_ricercato_inf = myarray[ ];
    }
}


Arduino Forum > International > Italiano > Generale (Moderator: leo72) > idee per velocizzare ricerca dati in array?


arduino

Comments

Popular posts from this blog

VIDIOC_S_FMT error 16, Device or resource busy - Raspberry Pi Forums

using a laptop skeleton to build a pi laptop - Raspberry Pi Forums

Forum for Joomla? - Joomla! Forum - community, help and support