Estoy trabajando en un editor de mapas vectoriales y tengo un conjunto de elementos, cada uno de los cuales especifica su cuadro delimitador dentro de la vista. A medida que el mouse se mueve, quiero resaltar el primer elemento cuyo cuadro delimitador contiene la ubicación actual del mouse. En este momento, utilizo una lista simple y la reviso, pero como es probable que aumente el número de elementos, la complejidad de O (n) del algoritmo de búsqueda actual será problemática para una aplicación interactiva.punto eficiente dentro de los límites del rectángulo de búsqueda
lo que sería una mejor estructura de algoritmo/datos para esto?
Algunos restricciones adicionales/requisitos:
- El llenado de la estructura de datos de los cuadros delimitadores tendrían que ser relativamente rápida (ya que tengo que hacer que cada vez que el mapa se mueve o el zoom o cambios de proyección).
- El algoritmo tendría que ser capaz de encontrar todas de los elementos coincidentes (no sólo el primero). La razón es que algunos elementos del mapa pueden tener una forma irregular, por lo que la simple coincidencia del cuadro delimitador no es lo suficientemente estricta. Luego revisaría la lista de coincidencias y haría una coincidencia precisa.
- El fin en la que se han añadido las cajas para el conjunto necesita ser mantenido alguna manera - un elemento de mapa que se dibuja por encima de otro elemento debe tener una prioridad al momento de contrastar sus cuadros delimitadores.
¿hay limitaciones de memoria? en caso negativo, es posible que desee utilizar la tabla de búsqueda. – amit
No mencioné deliberadamente las limitaciones de memoria porque quería escuchar varias ideas y luego emitir un juicio sobre la relación velocidad/memoria. ¿Puede ser más específico acerca de las tablas de búsqueda en este escenario? –