Ho bisogno di recuperare cinque stelle da un gruppo di stelle in modo da poterle nascondere girando la loro bandiera visibile su "false".
Conosco il valore di coordinate x, y di ogni stella che sto cercando. Il mio algoritmo apre una transazione e recupera un gruppo di stelle i cui valori x, y rientrano nelle estensioni delle cinque stelle che sto cercando.
Questo è più veloce dell'apertura di cinque transazioni separate e guardando individualmente una posizione x, y di ciascuna stella.
Con il gruppo di stelle sotto quello che voglio fare è confrontare il valore x, y di ogni stella per trovare una corrispondenza con quella delle cinque che sto cercando.
Gruppo di oltre 400 stelle da cercare
*********************************************
*********************************************
*********************************************
*********************************************
*********************************************
*********************************************
*********************************************
*********************************************
*********************************************
Il mio pensiero su questo è che ho due scelte per iterare attraverso la collezione:
(1) Posso scorrere le oltre 400 stelle una alla volta, prendere i valori x, y di ciascuna e quindi scorrere tra i cinque gruppi di coordinate per vedere se corrisponde a una delle il cinque che sto cercando.
(2) Posso scorrere le "cinque stelle per trovare" una alla volta e quindi scorrere la collezione di oltre 400 stelle cercando una corrispondenza
NB:
La collezione di stelle ha oltre 400 stelle che rientrano nelle estensioni.
La proprietà "visibile" funziona solo per gli elementi nella raccolta di stelle.
La raccolta stars_to_find ha le coordinate delle cinque stelle che sto cercando.
Frammenti di codice
(1)
foreach (Star star in stars)
{
foreach (Star star_to_find in stars_to_find)
{
if (star.Coordinates.Equals(star_to_find.Coordinates))
{
star.Visible = false;
}
}
}
(2)
foreach (Star star_to_find in stars_to_find)
{
foreach (Star star in stars)
{
if (star.Coordinates.Equals(star_to_find.Coordinates))
{
star.Visible = false;
}
}
}
Il metodo di ricerca è, (1) o (2), più veloce dell'altro? Esiste un algoritmo di ricerca diverso che potrebbe funzionare meglio?