Che tipo di infrastruttura/algoritmo dovrei usare per cercare in quale sezione si trova attualmente, dato un elenco di endpoint di ogni sezione?Struttura dati/Algoritmo per la ricerca di sezioni
Per esempio, se ho una pagina web con le intestazioni delle sezioni e dei contenuti,
- Introduzione (termina a 100px)
- sezione 1 (termina a 350px)
- Sezione 2 (termina a 700px)
- Conclusione (termina a 1200px)
- commenti
e sono attualmente a 130px, dovrebbe restituire che sono attualmente in "Sezione 1".
Opzione 1
ricerca binaria attraverso gamma di endpoint
from bisect import bisect_left
arr = [100, 350, 700, 1200]
pos = bisect_left(arr, 130, 0, arr[-1])
Tuttavia, questo potrebbe ancora prendere O (log n) per ogni cambiamento di posizione.
Opzione 2
tabella hash di ricerca della posizione corrente,
lookup = {0: "Introduction"
1: "Introduction"
...
10: "Section 1"
11: "Section 1"
...
}
section = lookup[130/10]
Questo è veloce, ma spreca un sacco di spazio
Esiste un generale dei dati struttura/algoritmo che si occupa di questo tipo di problema?
Il numero 'Section' non può essere molto grande, penso che un array semplice sia OK – throwit
Quante sezioni hai? È possibile che le sezioni vengano create/aggiornate/cancellate in fase di esecuzione? –
Ho appena usato sezioni su una pagina Web come esempio, ma in realtà è usata per array più grandi, quindi un algoritmo generale sarebbe bello. @ Толя Non ho pensato di modificarlo in tempo reale, ma sarebbe bello avere una buona complessità anche per quello. –