Ho cercato di capire un algoritmo efficiente in grado di verificare se un elenco di valori contiene un elenco di valori. Entrambe le liste sono ordinate in ordine crescente.
Ad esempio:
Controlla se
var listToSearch = [1,2,3,4,5,6,7]
contiene
var searchValues = [1,2,3]
Senza scorrere l'elenco per ogni valore in searchValues
. Né voglio usare qualcosa come la ricerca binaria per ogni valore in searchValues
.
Ho provato a creare una ricerca binaria modificata per questo, ma non funziona. C'è qualche modifica della ricerca binaria ma per più valori di ricerca o qualsiasi altro algoritmo progettato per questo problema?
Modifica: voglio verificare se listToSearch
ha ANY dei valori in searchValues
(non l'intero sottolista). Quindi, ad esempio, l'algoritmo potrebbe restituire [true, true, true] poiché 1,2 e 3 sono tutti trovati in listToSearch