¿Se puede encontrar la intersección de dos listas en menos de tiempo lineal (las listas están ordenadas)?

Sí. Y no.

Considere dos listas ordenadas L1 y L2, que tienen tamaños s1 y s2. El tiempo lineal significa que se necesita O (s1 + s2) para ejecutarse.
El algoritmo puede ser así: tome los primeros elementos de cada lista y compárelos. Si es “igual”, entonces es común, así que agréguelo a la lista de salida. Si “no es igual”, tome el siguiente elemento de la lista que dio el elemento inferior. Haga esta comparación en un bucle.
Cuando una lista está completa, no es necesario repasar los elementos restantes de la otra lista.
Por lo tanto, siempre será lineal. Pero puede que no sea necesario verificar todos los elementos s1 + s2 (que es el peor de los casos), por lo que respondería a su pregunta como Sí, si quiere decir “menos de tiempo lineal” en el caso promedio.

Ahora puede haber otras estructuras de datos (por ejemplo, listas de omisión) que brinden mejores soluciones, pero para las listas (de las que trata esta pregunta) cada elemento de al menos una lista DEBE ser procesado. Por lo tanto, no es posible hacerlo mejor que el tiempo lineal, por lo que respondería su pregunta como NO.

Manash ha explicado adecuadamente por qué no puede ser sub-lineal, pero creo que vale la pena mencionar una optimización simple:
Si espera tomar una intersección, puede agrupar los valores en la lista (use un hash si no son numéricos), y luego su intersección será lineal en el número de cubos en lugar de la longitud de las listas.
Esto se reduce al caso basado en la longitud si todos los elementos en cada lista son únicos, pero si existen duplicados, también puede guardar un factor log (n) al no tener que ordenar (suponiendo que los cubos no se conocen de antemano, lo que hace que la ordenación de conteo inaplicable), y el hecho de que la clasificación ya no es necesaria significa que puede intersectar elementos sin ningún orden definido. También te deja con valores de depósito de nuevo, por lo que te compones en las ganancias si estás intersectando un montón de listas.

Por ejemplo, considere la intersección de cinco listas, cada una con 100 enteros del 1 al 10.
Hacer una intersección en dos listas sin ordenar es O (n ^ 2), por lo que cada intersección toma más de 10,000 comparaciones, para un total de 40,000 comparaciones en el peor de los casos.
Si hacemos una clasificación O (n) en cada lista y luego hacemos cuatro intersecciones O (n), tiene un total de 900 comparaciones en el peor de los casos.
Pero si primero agrupamos todos los valores, podemos hacer intersecciones en O (#buckets): 5 * 100 (bucket) + 4 * 10 (intersect) = 540 comparaciones.

Sí, se puede encontrar si crea una estructura de datos diferente de las listas. La estructura de datos se explica a continuación, a partir de cada elemento de la lista A, construya un árbol binario con los elementos de la lista B, de manera similar, a partir de cada nodo de la lista B construya un árbol binario con los elementos de A, será una estructura muy compleja pero la complejidad debe estar en algún lugar, O (log (n) * log (n)).

No, informalmente, considere el caso de dos listas A y B de modo que A = B (en orden). Todavía hay que verificar cada elemento de A contra la posición correspondiente en B.
Sin ninguna otra restricción, parece ser siempre lineal.

El mejor caso puede ser menos que lineal, pero hoy en día a nadie le importa. Entonces no.